--begin top
{- 

    Copyright © 2011 - 2021, Ingo Wechsung
    All rights reserved.

    Redistribution and use in source and binary forms, with or
    without modification, are permitted provided that the following
    conditions are met:

        Redistributions of source code must retain the above copyright
        notice, this list of conditions and the following disclaimer.

        Redistributions in binary form must reproduce the above
        copyright notice, this list of conditions and the following
        disclaimer in the documentation and/or other materials provided
        with the distribution. 

        Neither the name of the copyright holder
        nor the names of its contributors may be used to endorse or
        promote products derived from this software without specific
        prior written permission.

    THIS SOFTWARE IS PROVIDED BY THE
    COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
    IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
    PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER
    OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
    SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
    LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
    USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
    AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
    IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
    THE POSSIBILITY OF SUCH DAMAGE.

     -}

{--
    This is the grammar for the Frege language.
-}
module frege.compiler.grammar.Frege; -- where

    {-
       !!! DO NOT CHANGE FILE Frege.fr, IT HAS BEEN CREATED AUTOMATICALLY !!!
    -}

import frege.Prelude hiding(<+>, break);

import frege.control.monad.State(State);

import Data.TreeMap(insert);
import Data.List as DL(elemBy);

import  Compiler.enums.Flags ;
import  Compiler.enums.TokenID(TokenID);
import  Compiler.enums.Visibility;
import  Compiler.enums.Literals;
import  Compiler.enums.CaseKind;

import  Compiler.types.Positions;
import  Compiler.types.Tokens;
import  Compiler.types.SNames;
import  Compiler.types.Packs(magicPack);
import  Compiler.types.ImportDetails;
import  Compiler.types.Types;
import  Compiler.types.SourceDefinitions;
import  Compiler.types.ConstructorField;
import  Compiler.types.Global as G;

import  Compiler.common.Mangle;
import  Compiler.common.Errors as E();
import  Compiler.common.Resolve as R(enclosed);

import Lib.PP (group, break, msgdoc);
import frege.compiler.common.Tuples as T(tuple);
import frege.compiler.common.Desugar;

import frege.compiler.grammar.Lexer (substQQ);


-- this will speed up the parser by a factor of 70, cause yyprods comes out monotyped.
private yyprod1 :: [(Int, YYsi ParseResult Token)]
    -> StG (YYsi ParseResult Token, [(Int, YYsi ParseResult Token)]);


{-
 The following definitions are not strictly necessary, but they help
 to avoid truly crazy type signatures for parse stack items and
 considerably speed up type checking in giving the result types of
 certain nonterminal reduction rules.
 Note that you cannot lie about the type of nonterminal reduction rules.
 Note that types like "Maybe x" on the RHS must be given like so: (Maybe x)
 -}
--end top
type YYM = State;
-- data YYAction = YYShift Int | YYRed Int | YYErr | YYAccept;
!yyAccept = maxBound :: Int;
!yyErr    = minBound :: Int;
!yyBrace  = 0xbacebace; -- hack to cause insertion of '}'
{-- positive numbers are *shift* actions, or *accept*
    negative ones are *reduce* actions, or *error* --};
newtype YYAction = YYAction Int;
data YYsi res tok  = 
	  YYStart () | YYAcc res | YYTok tok
	| YYNTaeq Token
	| YYNTalias Token
	| YYNTannoitem Token
	| YYNTannoitems [Token]
	| YYNTannotation [Def]
	| YYNTapats [Exp]
	| YYNTappex Exp
	| YYNTbinex Exp
	| YYNTcalt CAltS
	| YYNTcalts [CAltS]
	| YYNTccontext [ContextS]
	| YYNTclassdef Def
	| YYNTcommata Int
	| YYNTconfld [ConField SName]
	| YYNTconflds [ConField SName]
	| YYNTcontype (ConField SName)
	| YYNTcontypes [ConField SName]
	| YYNTdalt DConS
	| YYNTdalts [DConS]
	| YYNTdatadef Def
	| YYNTdatainit Def
	| YYNTdefinition [Def]
	| YYNTdefinitions [Def]
	| YYNTderivedef Def
	| YYNTdocs String
	| YYNTdocsO (Maybe String)
	| YYNTdocumentation Def
	| YYNTdodefs [Qual]
	| YYNTdplocaldef [Def]
	| YYNTdvars [TauS]
	| YYNTelsex Token
	| YYNTexpr Exp
	| YYNTexprSC [Exp]
	| YYNTexprSS [Exp]
	| YYNTfield (String, Exp)
	| YYNTfields [(String, Exp)]
	| YYNTfitem Token
	| YYNTfixity Def
	| YYNTfldid (SigmaS -> ConField SName)
	| YYNTfldids [SigmaS -> ConField SName]
	| YYNTforall SigmaS
	| YYNTfundef [Def]
	| YYNTfunhead (Exp, [Pat])
	| YYNTgargs [TauS]
	| YYNTgetfield (Token, Bool,Exp)
	| YYNTgetfields [(Token,Bool,Exp)]
	| YYNTgqual Qual
	| YYNTgquals [Qual]
	| YYNTguard Guard
	| YYNTguards [Guard]
	| YYNTicontext [ContextS]
	| YYNTimport Def
	| YYNTimportitem ImportItem
	| YYNTimportliste ImportList
	| YYNTimportspec ImportItem
	| YYNTimportspecs [ImportItem]
	| YYNTimpurenativedef Def
	| YYNTinfix Def
	| YYNTinstdef Def
	| YYNTinsthead Def
	| YYNTinterfaces [TauS]
	| YYNTjitem String
	| YYNTjtoken Token
	| YYNTjtokens [Token]
	| YYNTkind KindS
	| YYNTlambda Exp
	| YYNTlambdabody Exp
	| YYNTlcqual Qual
	| YYNTlcquals [Qual]
	| YYNTletdef [Def]
	| YYNTletdefs [Def]
	| YYNTliteral Exp
	| YYNTlocaldef [Def]
	| YYNTlocaldefs [Def]
	| YYNTmbdot Token
	| YYNTmemspec ImportItem
	| YYNTmemspecs [ImportItem]
	| YYNTmethodspec (Token, String, Maybe [TauS])
	| YYNTmodule ParseResult
	| YYNTmoduleclause (String, Position)
	| YYNTmoduledefinition Def
	| YYNTmodulename (String, Position)
	| YYNTmodulename1 (String, Position)
	| YYNTnativedef Def
	| YYNTnativename String
	| YYNTnativepur Bool
	| YYNTnativespec (String, Maybe [TauS])
	| YYNToperator Token
	| YYNToperators [String]
	| YYNTopstring String
	| YYNTpattern Pat
	| YYNTplainfldid (SigmaS -> ConField SName)
	| YYNTplocaldef [Def]
	| YYNTprimary Exp
	| YYNTpublicdefinition [Def]
	| YYNTqconid SName
	| YYNTqualifiers (Token -> SName)
	| YYNTqvarid SName
	| YYNTqvarids [SName]
	| YYNTqvarop SName
	| YYNTrawnativename String
	| YYNTrho RhoS
	| YYNTrhofun RhoS
	| YYNTscontext ContextS
	| YYNTscontexts [ContextS]
	| YYNTsicontext ContextS
	| YYNTsicontexts [ContextS]
	| YYNTsigex SigExs
	| YYNTsigexs [SigExs]
	| YYNTsigma SigmaS
	| YYNTsimpledalt DConS
	| YYNTsimplekind KindS
	| YYNTsimpletype TauS
	| YYNTsimpletypes [TauS]
	| YYNTstrictcontype (ConField SName)
	| YYNTstrictdalt DConS
	| YYNTstrictfldid (SigmaS -> ConField SName)
	| YYNTtapp TauS
	| YYNTtau TauS
	| YYNTtauSB [TauS]
	| YYNTtauSC [TauS]
	| YYNTterm Exp
	| YYNTthenx Token
	| YYNTtopdefinition [Def]
	| YYNTtopex Exp
	| YYNTtyname SName
	| YYNTtypeclause (Maybe TauS)
	| YYNTtypedef Def
	| YYNTtyvar TauS
	| YYNTunex Exp
	| YYNTunop Token
	| YYNTvarid Token
	| YYNTvaridkw Token
	| YYNTvarop Token
	| YYNTvisdalt DConS
	| YYNTvisibledefinition [Def]
	| YYNTwheredef [Def]
	| YYNTwherelet [Def]
	| YYNTwheretokens [Token]
	| YYNTword String
	| YYNTwords [String];
showsi (YYStart  _) = "%start ";
	showsi (YYAcc _) = "%accept ";
	showsi (YYTok x) = yyshow x;
	showsi (YYNTaeq _) = "<aeq>";
	showsi (YYNTalias _) = "<alias>";
	showsi (YYNTannoitem _) = "<annoitem>";
	showsi (YYNTannoitems _) = "<annoitems>";
	showsi (YYNTannotation _) = "<annotation>";
	showsi (YYNTapats _) = "<apats>";
	showsi (YYNTappex _) = "<appex>";
	showsi (YYNTbinex _) = "<binex>";
	showsi (YYNTcalt _) = "<calt>";
	showsi (YYNTcalts _) = "<calts>";
	showsi (YYNTccontext _) = "<ccontext>";
	showsi (YYNTclassdef _) = "<classdef>";
	showsi (YYNTcommata _) = "<commata>";
	showsi (YYNTconfld _) = "<confld>";
	showsi (YYNTconflds _) = "<conflds>";
	showsi (YYNTcontype _) = "<contype>";
	showsi (YYNTcontypes _) = "<contypes>";
	showsi (YYNTdalt _) = "<dalt>";
	showsi (YYNTdalts _) = "<dalts>";
	showsi (YYNTdatadef _) = "<datadef>";
	showsi (YYNTdatainit _) = "<datainit>";
	showsi (YYNTdefinition _) = "<definition>";
	showsi (YYNTdefinitions _) = "<definitions>";
	showsi (YYNTderivedef _) = "<derivedef>";
	showsi (YYNTdocs _) = "<docs>";
	showsi (YYNTdocsO _) = "<docsO>";
	showsi (YYNTdocumentation _) = "<documentation>";
	showsi (YYNTdodefs _) = "<dodefs>";
	showsi (YYNTdplocaldef _) = "<dplocaldef>";
	showsi (YYNTdvars _) = "<dvars>";
	showsi (YYNTelsex _) = "<elsex>";
	showsi (YYNTexpr _) = "<expr>";
	showsi (YYNTexprSC _) = "<exprSC>";
	showsi (YYNTexprSS _) = "<exprSS>";
	showsi (YYNTfield _) = "<field>";
	showsi (YYNTfields _) = "<fields>";
	showsi (YYNTfitem _) = "<fitem>";
	showsi (YYNTfixity _) = "<fixity>";
	showsi (YYNTfldid _) = "<fldid>";
	showsi (YYNTfldids _) = "<fldids>";
	showsi (YYNTforall _) = "<forall>";
	showsi (YYNTfundef _) = "<fundef>";
	showsi (YYNTfunhead _) = "<funhead>";
	showsi (YYNTgargs _) = "<gargs>";
	showsi (YYNTgetfield _) = "<getfield>";
	showsi (YYNTgetfields _) = "<getfields>";
	showsi (YYNTgqual _) = "<gqual>";
	showsi (YYNTgquals _) = "<gquals>";
	showsi (YYNTguard _) = "<guard>";
	showsi (YYNTguards _) = "<guards>";
	showsi (YYNTicontext _) = "<icontext>";
	showsi (YYNTimport _) = "<import>";
	showsi (YYNTimportitem _) = "<importitem>";
	showsi (YYNTimportliste _) = "<importliste>";
	showsi (YYNTimportspec _) = "<importspec>";
	showsi (YYNTimportspecs _) = "<importspecs>";
	showsi (YYNTimpurenativedef _) = "<impurenativedef>";
	showsi (YYNTinfix _) = "<infix>";
	showsi (YYNTinstdef _) = "<instdef>";
	showsi (YYNTinsthead _) = "<insthead>";
	showsi (YYNTinterfaces _) = "<interfaces>";
	showsi (YYNTjitem _) = "<jitem>";
	showsi (YYNTjtoken _) = "<jtoken>";
	showsi (YYNTjtokens _) = "<jtokens>";
	showsi (YYNTkind _) = "<kind>";
	showsi (YYNTlambda _) = "<lambda>";
	showsi (YYNTlambdabody _) = "<lambdabody>";
	showsi (YYNTlcqual _) = "<lcqual>";
	showsi (YYNTlcquals _) = "<lcquals>";
	showsi (YYNTletdef _) = "<letdef>";
	showsi (YYNTletdefs _) = "<letdefs>";
	showsi (YYNTliteral _) = "<literal>";
	showsi (YYNTlocaldef _) = "<localdef>";
	showsi (YYNTlocaldefs _) = "<localdefs>";
	showsi (YYNTmbdot _) = "<mbdot>";
	showsi (YYNTmemspec _) = "<memspec>";
	showsi (YYNTmemspecs _) = "<memspecs>";
	showsi (YYNTmethodspec _) = "<methodspec>";
	showsi (YYNTmodule _) = "<module>";
	showsi (YYNTmoduleclause _) = "<moduleclause>";
	showsi (YYNTmoduledefinition _) = "<moduledefinition>";
	showsi (YYNTmodulename _) = "<modulename>";
	showsi (YYNTmodulename1 _) = "<modulename1>";
	showsi (YYNTnativedef _) = "<nativedef>";
	showsi (YYNTnativename _) = "<nativename>";
	showsi (YYNTnativepur _) = "<nativepur>";
	showsi (YYNTnativespec _) = "<nativespec>";
	showsi (YYNToperator _) = "<operator>";
	showsi (YYNToperators _) = "<operators>";
	showsi (YYNTopstring _) = "<opstring>";
	showsi (YYNTpattern _) = "<pattern>";
	showsi (YYNTplainfldid _) = "<plainfldid>";
	showsi (YYNTplocaldef _) = "<plocaldef>";
	showsi (YYNTprimary _) = "<primary>";
	showsi (YYNTpublicdefinition _) = "<publicdefinition>";
	showsi (YYNTqconid _) = "<qconid>";
	showsi (YYNTqualifiers _) = "<qualifiers>";
	showsi (YYNTqvarid _) = "<qvarid>";
	showsi (YYNTqvarids _) = "<qvarids>";
	showsi (YYNTqvarop _) = "<qvarop>";
	showsi (YYNTrawnativename _) = "<rawnativename>";
	showsi (YYNTrho _) = "<rho>";
	showsi (YYNTrhofun _) = "<rhofun>";
	showsi (YYNTscontext _) = "<scontext>";
	showsi (YYNTscontexts _) = "<scontexts>";
	showsi (YYNTsicontext _) = "<sicontext>";
	showsi (YYNTsicontexts _) = "<sicontexts>";
	showsi (YYNTsigex _) = "<sigex>";
	showsi (YYNTsigexs _) = "<sigexs>";
	showsi (YYNTsigma _) = "<sigma>";
	showsi (YYNTsimpledalt _) = "<simpledalt>";
	showsi (YYNTsimplekind _) = "<simplekind>";
	showsi (YYNTsimpletype _) = "<simpletype>";
	showsi (YYNTsimpletypes _) = "<simpletypes>";
	showsi (YYNTstrictcontype _) = "<strictcontype>";
	showsi (YYNTstrictdalt _) = "<strictdalt>";
	showsi (YYNTstrictfldid _) = "<strictfldid>";
	showsi (YYNTtapp _) = "<tapp>";
	showsi (YYNTtau _) = "<tau>";
	showsi (YYNTtauSB _) = "<tauSB>";
	showsi (YYNTtauSC _) = "<tauSC>";
	showsi (YYNTterm _) = "<term>";
	showsi (YYNTthenx _) = "<thenx>";
	showsi (YYNTtopdefinition _) = "<topdefinition>";
	showsi (YYNTtopex _) = "<topex>";
	showsi (YYNTtyname _) = "<tyname>";
	showsi (YYNTtypeclause _) = "<typeclause>";
	showsi (YYNTtypedef _) = "<typedef>";
	showsi (YYNTtyvar _) = "<tyvar>";
	showsi (YYNTunex _) = "<unex>";
	showsi (YYNTunop _) = "<unop>";
	showsi (YYNTvarid _) = "<varid>";
	showsi (YYNTvaridkw _) = "<varidkw>";
	showsi (YYNTvarop _) = "<varop>";
	showsi (YYNTvisdalt _) = "<visdalt>";
	showsi (YYNTvisibledefinition _) = "<visibledefinition>";
	showsi (YYNTwheredef _) = "<wheredef>";
	showsi (YYNTwherelet _) = "<wherelet>";
	showsi (YYNTwheretokens _) = "<wheretokens>";
	showsi (YYNTword _) = "<word>";
	showsi (YYNTwords _) = "<words>";
showst st = joined " " (map (\(_,si) -> showsi si) (reverse st));
!yydebug = (maybe "" id (System.getenv "YYDEBUG")).toLowerCase ~ ´(1|yes|true|on)´;
yytrace s = (if yydebug then trace s else false) `seq` ();
yydbgAccept  s t = yytrace ("in state " ++ show s ++ " accept  " ++ show t ++  "\n" );
private yyaction0 t =   case yychar t of {
  '{' -> YYAction (-18);
  _ ->   case yytoken t of {
    DOCUMENTATION -> YYAction 1;
    PACKAGE -> YYAction (-18);
    PROTECTED -> YYAction (-18);
    _ -> YYAction yyErr;
  };
};
private yyaction1 t =   case yychar t of {
  '{' -> YYAction (-16);
  '?' -> YYAction (-16);
  '!' -> YYAction (-16);
  _ ->   case yytoken t of {
    DOCUMENTATION -> YYAction 1;
    VARID -> YYAction (-16);
    PACKAGE -> YYAction (-16);
    PRIVATE -> YYAction (-16);
    PROTECTED -> YYAction (-16);
    PUBLIC -> YYAction (-16);
    _ -> YYAction yyErr;
  };
};
yyaccept  (yyvals@((2, (YYNTmodule yy1)):_), yytoks) = yydbgAccept 2 (showst (take 1 yyvals)) `seq`
	([(2, YYAcc yy1)], yytoks);
yyaccept (yyvs,_) = yybadprod 2 yyvs;
private yyaction2 t = YYAction yyErr;
private yyaction3 t =   case yychar t of {
  '{' -> YYAction 8;
  _ ->   case yytoken t of {
    PACKAGE -> YYAction 6;
    PROTECTED -> YYAction 7;
    _ -> YYAction yyErr;
  };
};
private yyaction4 t = YYAction (-19);
private yyaction5 t = YYAction (-17);
private yyaction6 t =   case yytoken t of {
    VARID -> YYAction 10;
    CONID -> YYAction 11;
    QUALIFIER -> YYAction 12;
    PACKAGE -> YYAction 13;
    IMPORT -> YYAction 14;
    NATIVE -> YYAction 15;
    DATA -> YYAction 16;
    TYPE -> YYAction 17;
    PURE -> YYAction 18;
    _ -> YYAction yyErr;
  };
private yyaction7 t =   case yytoken t of {
    PACKAGE -> YYAction 22;
    _ -> YYAction yyErr;
  };
private yyaction8 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 59;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 23;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    DOCUMENTATION -> YYAction 26;
    IMPORT -> YYAction 27;
    INFIX -> YYAction 28;
    INFIXR -> YYAction 29;
    INFIXL -> YYAction 30;
    NATIVE -> YYAction 31;
    NEWTYPE -> YYAction 32;
    DATA -> YYAction 33;
    CLASS -> YYAction 34;
    INSTANCE -> YYAction 35;
    ABSTRACT -> YYAction 36;
    TYPE -> YYAction 37;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    DERIVE -> YYAction 42;
    LET -> YYAction 43;
    DO -> YYAction 44;
    PRIVATE -> YYAction 45;
    PROTECTED -> YYAction 46;
    PUBLIC -> YYAction 47;
    PURE -> YYAction 48;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction9 t =   case yychar t of {
  ';' -> YYAction 104;
  _ ->   case yytoken t of {
    VARID -> YYAction 102;
    WHERE -> YYAction 103;
    _ -> YYAction yyErr;
  };
};
private yyaction10 t = YYAction (-169);
private yyaction11 t = YYAction (-12);
private yyaction12 t =   case yytoken t of {
    VARID -> YYAction 10;
    CONID -> YYAction 11;
    QUALIFIER -> YYAction 12;
    PACKAGE -> YYAction 13;
    IMPORT -> YYAction 14;
    NATIVE -> YYAction 15;
    DATA -> YYAction 16;
    TYPE -> YYAction 17;
    PURE -> YYAction 18;
    _ -> YYAction yyErr;
  };
private yyaction13 t = YYAction (-174);
private yyaction14 t = YYAction (-175);
private yyaction15 t = YYAction (-172);
private yyaction16 t = YYAction (-170);
private yyaction17 t = YYAction (-171);
private yyaction18 t = YYAction (-173);
private yyaction19 t = YYAction (-15);
private yyaction20 t =   case yychar t of {
  '.' -> YYAction 108;
  _ -> YYAction yyErr;
};
private yyaction21 t = YYAction (-20);
private yyaction22 t =   case yytoken t of {
    VARID -> YYAction 10;
    CONID -> YYAction 11;
    QUALIFIER -> YYAction 12;
    PACKAGE -> YYAction 13;
    IMPORT -> YYAction 14;
    NATIVE -> YYAction 15;
    DATA -> YYAction 16;
    TYPE -> YYAction 17;
    PURE -> YYAction 18;
    _ -> YYAction yyErr;
  };
private yyaction23 t =   case yychar t of {
  '-' -> YYAction (-180);
  '.' -> YYAction (-180);
  '(' -> YYAction (-180);
  ',' -> YYAction (-168);
  '|' -> YYAction (-180);
  '[' -> YYAction (-180);
  '?' -> YYAction (-180);
  '!' -> YYAction (-180);
  '=' -> YYAction (-180);
  '_' -> YYAction (-180);
  _ ->   case yytoken t of {
    VARID -> YYAction (-180);
    CONID -> YYAction (-180);
    QUALIFIER -> YYAction (-180);
    TRUE -> YYAction (-180);
    FALSE -> YYAction (-180);
    DO -> YYAction (-180);
    INTCONST -> YYAction (-180);
    STRCONST -> YYAction (-180);
    LONGCONST -> YYAction (-180);
    FLTCONST -> YYAction (-180);
    DBLCONST -> YYAction (-180);
    DECCONST -> YYAction (-180);
    CHRCONST -> YYAction (-180);
    REGEXP -> YYAction (-180);
    BIGCONST -> YYAction (-180);
    DCOLON -> YYAction (-168);
    SOMEOP -> YYAction (-180);
    _ -> YYAction yyErr;
  };
};
private yyaction24 t = YYAction (-183);
private yyaction25 t =   case yychar t of {
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '{' -> YYAction (-408);
  _ ->   case yytoken t of {
    VARID -> YYAction 110;
    CONID -> YYAction 111;
    QUALIFIER -> YYAction 112;
    _ -> YYAction yyErr;
  };
};
private yyaction26 t = YYAction (-114);
private yyaction27 t =   case yytoken t of {
    VARID -> YYAction 10;
    CONID -> YYAction 11;
    QUALIFIER -> YYAction 12;
    PACKAGE -> YYAction 13;
    IMPORT -> YYAction 14;
    NATIVE -> YYAction 15;
    DATA -> YYAction 16;
    TYPE -> YYAction 17;
    PURE -> YYAction 18;
    _ -> YYAction yyErr;
  };
private yyaction28 t =   case yytoken t of {
    INTCONST -> YYAction 116;
    _ -> YYAction yyErr;
  };
private yyaction29 t =   case yytoken t of {
    INTCONST -> YYAction 117;
    _ -> YYAction yyErr;
  };
private yyaction30 t =   case yytoken t of {
    INTCONST -> YYAction 118;
    _ -> YYAction yyErr;
  };
private yyaction31 t =   case yychar t of {
  '-' -> YYAction 122;
  '(' -> YYAction 123;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  _ ->   case yytoken t of {
    VARID -> YYAction 119;
    PACKAGE -> YYAction 120;
    SOMEOP -> YYAction 121;
    _ -> YYAction yyErr;
  };
};
private yyaction32 t =   case yytoken t of {
    CONID -> YYAction 129;
    _ -> YYAction yyErr;
  };
private yyaction33 t =   case yytoken t of {
    CONID -> YYAction 130;
    _ -> YYAction yyErr;
  };
private yyaction34 t =   case yychar t of {
  '(' -> YYAction 132;
  _ ->   case yytoken t of {
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 131;
    _ -> YYAction yyErr;
  };
};
private yyaction35 t =   case yychar t of {
  '(' -> YYAction 136;
  _ ->   case yytoken t of {
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 131;
    _ -> YYAction yyErr;
  };
};
private yyaction36 t =   case yytoken t of {
    NEWTYPE -> YYAction 32;
    DATA -> YYAction 33;
    _ -> YYAction yyErr;
  };
private yyaction37 t =   case yytoken t of {
    CONID -> YYAction 142;
    _ -> YYAction yyErr;
  };
private yyaction38 t = YYAction (-347);
private yyaction39 t = YYAction (-348);
private yyaction40 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 144;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction41 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 144;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction42 t =   case yychar t of {
  '(' -> YYAction 136;
  _ ->   case yytoken t of {
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 131;
    _ -> YYAction yyErr;
  };
};
private yyaction43 t =   case yychar t of {
  '{' -> YYAction 149;
  _ -> YYAction yyErr;
};
private yyaction44 t =   case yychar t of {
  '{' -> YYAction 150;
  _ -> YYAction yyErr;
};
private yyaction45 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 59;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 23;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    NATIVE -> YYAction 151;
    NEWTYPE -> YYAction 32;
    DATA -> YYAction 33;
    CLASS -> YYAction 34;
    INSTANCE -> YYAction 35;
    TYPE -> YYAction 37;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    DERIVE -> YYAction 42;
    LET -> YYAction 43;
    DO -> YYAction 44;
    PURE -> YYAction 48;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction46 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 59;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 23;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    NATIVE -> YYAction 151;
    NEWTYPE -> YYAction 32;
    DATA -> YYAction 33;
    CLASS -> YYAction 34;
    INSTANCE -> YYAction 35;
    TYPE -> YYAction 37;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    DERIVE -> YYAction 42;
    LET -> YYAction 43;
    DO -> YYAction 44;
    PURE -> YYAction 48;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction47 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 59;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 23;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    NATIVE -> YYAction 151;
    NEWTYPE -> YYAction 32;
    DATA -> YYAction 33;
    CLASS -> YYAction 34;
    INSTANCE -> YYAction 35;
    TYPE -> YYAction 37;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    DERIVE -> YYAction 42;
    LET -> YYAction 43;
    DO -> YYAction 44;
    PURE -> YYAction 48;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction48 t =   case yytoken t of {
    NATIVE -> YYAction 151;
    _ -> YYAction yyErr;
  };
private yyaction49 t = YYAction (-351);
private yyaction50 t = YYAction (-350);
private yyaction51 t = YYAction (-353);
private yyaction52 t = YYAction (-354);
private yyaction53 t = YYAction (-355);
private yyaction54 t = YYAction (-356);
private yyaction55 t = YYAction (-349);
private yyaction56 t = YYAction (-357);
private yyaction57 t = YYAction (-352);
private yyaction58 t =   case yychar t of {
  '(' -> YYAction 144;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction59 t =   case yychar t of {
  '-' -> YYAction 157;
  '(' -> YYAction 144;
  ')' -> YYAction 158;
  ',' -> YYAction 159;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    SOMEOP -> YYAction 121;
    _ -> YYAction yyErr;
  };
};
private yyaction60 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 144;
  '[' -> YYAction 60;
  ']' -> YYAction 165;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction61 t = YYAction (-192);
private yyaction62 t = YYAction (-191);
private yyaction63 t =   case yychar t of {
  '(' -> YYAction 144;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction64 t = YYAction (-426);
private yyaction65 t =   case yychar t of {
  '}' -> YYAction 170;
  _ -> YYAction yyBrace;
};
private yyaction66 t =   case yychar t of {
  ';' -> YYAction 171;
  '}' -> YYAction (-26);
  _ -> YYAction yyBrace;
};
private yyaction67 t = YYAction (-29);
private yyaction68 t = YYAction (-30);
private yyaction69 t = YYAction (-31);
private yyaction70 t = YYAction (-39);
private yyaction71 t = YYAction (-116);
private yyaction72 t = YYAction (-36);
private yyaction73 t = YYAction (-37);
private yyaction74 t = YYAction (-38);
private yyaction75 t = YYAction (-115);
private yyaction76 t = YYAction (-117);
private yyaction77 t = YYAction (-118);
private yyaction78 t = YYAction (-119);
private yyaction79 t = YYAction (-120);
private yyaction80 t = YYAction (-124);
private yyaction81 t = YYAction (-125);
private yyaction82 t =   case yychar t of {
  ';' -> YYAction (-126);
  '}' -> YYAction (-126);
  _ ->   case yytoken t of {
    WHERE -> YYAction 172;
    _ -> YYAction yyBrace;
  };
};
private yyaction83 t = YYAction (-203);
private yyaction84 t = YYAction (-424);
private yyaction85 t =   case yychar t of {
  '{' -> YYAction 174;
  '-' -> YYAction (-427);
  ';' -> YYAction (-427);
  '}' -> YYAction (-427);
  '.' -> YYAction (-427);
  '(' -> YYAction (-427);
  ')' -> YYAction (-427);
  ',' -> YYAction (-427);
  '|' -> YYAction (-427);
  '[' -> YYAction (-427);
  ']' -> YYAction (-427);
  '?' -> YYAction (-427);
  '!' -> YYAction (-427);
  '=' -> YYAction (-427);
  '\\' -> YYAction (-427);
  '_' -> YYAction (-427);
  _ ->   case yytoken t of {
    VARID -> YYAction (-427);
    CONID -> YYAction (-427);
    QUALIFIER -> YYAction (-427);
    WHERE -> YYAction (-427);
    TRUE -> YYAction (-427);
    FALSE -> YYAction (-427);
    THEN -> YYAction (-427);
    ELSE -> YYAction (-427);
    OF -> YYAction (-427);
    DO -> YYAction (-427);
    INTCONST -> YYAction (-427);
    STRCONST -> YYAction (-427);
    LONGCONST -> YYAction (-427);
    FLTCONST -> YYAction (-427);
    DBLCONST -> YYAction (-427);
    DECCONST -> YYAction (-427);
    CHRCONST -> YYAction (-427);
    REGEXP -> YYAction (-427);
    BIGCONST -> YYAction (-427);
    ARROW -> YYAction (-427);
    DCOLON -> YYAction (-427);
    GETS -> YYAction (-427);
    DOTDOT -> YYAction (-427);
    SOMEOP -> YYAction (-427);
    _ -> YYAction yyBrace;
  };
};
private yyaction86 t =   case yychar t of {
  '(' -> YYAction 144;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction87 t =   case yychar t of {
  '-' -> YYAction 177;
  _ ->   case yytoken t of {
    VARID -> YYAction 176;
    SOMEOP -> YYAction 121;
    _ -> YYAction yyErr;
  };
};
private yyaction88 t =   case yytoken t of {
    DCOLON -> YYAction 181;
    _ -> YYAction yyErr;
  };
private yyaction89 t =   case yychar t of {
  ',' -> YYAction 182;
  _ ->   case yytoken t of {
    DCOLON -> YYAction (-207);
    _ -> YYAction yyErr;
  };
};
private yyaction90 t = YYAction (-210);
private yyaction91 t =   case yychar t of {
  ';' -> YYAction (-338);
  '}' -> YYAction (-338);
  _ ->   case yytoken t of {
    WHERE -> YYAction 183;
    _ -> YYAction yyBrace;
  };
};
private yyaction92 t =   case yychar t of {
  '|' -> YYAction 185;
  '=' -> YYAction 186;
  _ -> YYAction yyErr;
};
private yyaction93 t =   case yychar t of {
  '-' -> YYAction 190;
  '|' -> YYAction (-346);
  '=' -> YYAction (-346);
  _ ->   case yytoken t of {
    SOMEOP -> YYAction 189;
    _ -> YYAction yyErr;
  };
};
private yyaction94 t = YYAction (-425);
private yyaction95 t = YYAction (-400);
private yyaction96 t = YYAction (-396);
private yyaction97 t =   case yychar t of {
  '(' -> YYAction 144;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '_' -> YYAction 64;
  '-' -> YYAction (-401);
  ';' -> YYAction (-401);
  '}' -> YYAction (-401);
  ')' -> YYAction (-401);
  ',' -> YYAction (-401);
  '|' -> YYAction (-401);
  ']' -> YYAction (-401);
  '=' -> YYAction (-401);
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    WHERE -> YYAction (-401);
    THEN -> YYAction (-401);
    ELSE -> YYAction (-401);
    OF -> YYAction (-401);
    ARROW -> YYAction (-401);
    DCOLON -> YYAction (-401);
    GETS -> YYAction (-401);
    DOTDOT -> YYAction (-401);
    SOMEOP -> YYAction (-401);
    _ -> YYAction yyBrace;
  };
};
private yyaction98 t = YYAction (-402);
private yyaction99 t =   case yychar t of {
  '.' -> YYAction 192;
  '-' -> YYAction (-404);
  ';' -> YYAction (-404);
  '}' -> YYAction (-404);
  '(' -> YYAction (-404);
  ')' -> YYAction (-404);
  ',' -> YYAction (-404);
  '|' -> YYAction (-404);
  '[' -> YYAction (-404);
  ']' -> YYAction (-404);
  '?' -> YYAction (-404);
  '!' -> YYAction (-404);
  '=' -> YYAction (-404);
  '\\' -> YYAction (-404);
  '_' -> YYAction (-404);
  _ ->   case yytoken t of {
    VARID -> YYAction (-404);
    CONID -> YYAction (-404);
    QUALIFIER -> YYAction (-404);
    WHERE -> YYAction (-404);
    TRUE -> YYAction (-404);
    FALSE -> YYAction (-404);
    THEN -> YYAction (-404);
    ELSE -> YYAction (-404);
    OF -> YYAction (-404);
    DO -> YYAction (-404);
    INTCONST -> YYAction (-404);
    STRCONST -> YYAction (-404);
    LONGCONST -> YYAction (-404);
    FLTCONST -> YYAction (-404);
    DBLCONST -> YYAction (-404);
    DECCONST -> YYAction (-404);
    CHRCONST -> YYAction (-404);
    REGEXP -> YYAction (-404);
    BIGCONST -> YYAction (-404);
    ARROW -> YYAction (-404);
    DCOLON -> YYAction (-404);
    GETS -> YYAction (-404);
    DOTDOT -> YYAction (-404);
    SOMEOP -> YYAction (-404);
    _ -> YYAction yyBrace;
  };
};
private yyaction100 t =   case yychar t of {
  '{' -> YYAction 193;
  _ -> YYAction yyErr;
};
private yyaction101 t = YYAction (-410);
private yyaction102 t = YYAction (-23);
private yyaction103 t =   case yychar t of {
  '{' -> YYAction 194;
  _ -> YYAction yyErr;
};
private yyaction104 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 59;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 23;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    DOCUMENTATION -> YYAction 26;
    IMPORT -> YYAction 27;
    INFIX -> YYAction 28;
    INFIXR -> YYAction 29;
    INFIXL -> YYAction 30;
    NATIVE -> YYAction 31;
    NEWTYPE -> YYAction 32;
    DATA -> YYAction 33;
    CLASS -> YYAction 34;
    INSTANCE -> YYAction 35;
    ABSTRACT -> YYAction 36;
    TYPE -> YYAction 37;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    DERIVE -> YYAction 42;
    LET -> YYAction 43;
    DO -> YYAction 44;
    PRIVATE -> YYAction 45;
    PROTECTED -> YYAction 46;
    PUBLIC -> YYAction 47;
    PURE -> YYAction 48;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction105 t =   case yychar t of {
  '(' -> YYAction 196;
  _ -> YYAction yyErr;
};
private yyaction106 t =   case yychar t of {
  '(' -> YYAction (-24);
  _ ->   case yytoken t of {
    VARID -> YYAction 102;
    _ -> YYAction yyErr;
  };
};
private yyaction107 t = YYAction (-14);
private yyaction108 t =   case yytoken t of {
    VARID -> YYAction 10;
    CONID -> YYAction 11;
    QUALIFIER -> YYAction 12;
    PACKAGE -> YYAction 13;
    IMPORT -> YYAction 14;
    NATIVE -> YYAction 15;
    DATA -> YYAction 16;
    TYPE -> YYAction 17;
    PURE -> YYAction 18;
    _ -> YYAction yyErr;
  };
private yyaction109 t = YYAction (-21);
private yyaction110 t = YYAction (-184);
private yyaction111 t = YYAction (-182);
private yyaction112 t =   case yychar t of {
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '{' -> YYAction (-409);
  _ ->   case yytoken t of {
    VARID -> YYAction 110;
    CONID -> YYAction 199;
    _ -> YYAction yyErr;
  };
};
private yyaction113 t = YYAction (-185);
private yyaction114 t = YYAction (-179);
private yyaction115 t =   case yychar t of {
  '(' -> YYAction 204;
  ';' -> YYAction (-142);
  '}' -> YYAction (-142);
  _ ->   case yytoken t of {
    VARID -> YYAction 201;
    CONID -> YYAction 202;
    PUBLIC -> YYAction 203;
    _ -> YYAction yyBrace;
  };
};
private yyaction116 t = YYAction (-193);
private yyaction117 t = YYAction (-195);
private yyaction118 t = YYAction (-194);
private yyaction119 t = YYAction (-168);
private yyaction120 t =   case yytoken t of {
    TYPE -> YYAction 207;
    WHERE -> YYAction (-41);
    CLASS -> YYAction (-41);
    _ -> YYAction yyErr;
  };
private yyaction121 t = YYAction (-190);
private yyaction122 t = YYAction (-213);
private yyaction123 t =   case yychar t of {
  '-' -> YYAction 209;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  _ ->   case yytoken t of {
    SOMEOP -> YYAction 121;
    _ -> YYAction yyErr;
  };
};
private yyaction124 t = YYAction (-214);
private yyaction125 t = YYAction (-212);
private yyaction126 t = YYAction (-211);
private yyaction127 t =   case yychar t of {
  '{' -> YYAction 217;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  _ ->   case yytoken t of {
    VARID -> YYAction 212;
    CONID -> YYAction 213;
    QUALIFIER -> YYAction 214;
    PACKAGE -> YYAction 215;
    STRCONST -> YYAction 216;
    SOMEOP -> YYAction 121;
    DCOLON -> YYAction (-221);
    _ -> YYAction yyErr;
  };
};
private yyaction128 t =   case yytoken t of {
    DCOLON -> YYAction 224;
    _ -> YYAction yyErr;
  };
private yyaction129 t =   case yychar t of {
  '(' -> YYAction 226;
  '=' -> YYAction 227;
  _ ->   case yytoken t of {
    VARID -> YYAction 225;
    _ -> YYAction yyErr;
  };
};
private yyaction130 t =   case yychar t of {
  '(' -> YYAction 226;
  '=' -> YYAction 230;
  ';' -> YYAction (-293);
  '}' -> YYAction (-293);
  _ ->   case yytoken t of {
    VARID -> YYAction 225;
    WHERE -> YYAction (-293);
    _ -> YYAction yyBrace;
  };
};
private yyaction131 t =   case yytoken t of {
    CONID -> YYAction 111;
    QUALIFIER -> YYAction 232;
    _ -> YYAction yyErr;
  };
private yyaction132 t =   case yytoken t of {
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 131;
    _ -> YYAction yyErr;
  };
private yyaction133 t =   case yychar t of {
  '(' -> YYAction 226;
  _ ->   case yytoken t of {
    VARID -> YYAction 225;
    _ -> YYAction yyErr;
  };
};
private yyaction134 t = YYAction (-268);
private yyaction135 t =   case yychar t of {
  ';' -> YYAction (-338);
  '}' -> YYAction (-338);
  _ ->   case yytoken t of {
    WHERE -> YYAction 183;
    EARROW -> YYAction 236;
    _ -> YYAction yyBrace;
  };
};
private yyaction136 t =   case yytoken t of {
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 131;
    _ -> YYAction yyErr;
  };
private yyaction137 t =   case yychar t of {
  '(' -> YYAction 240;
  '[' -> YYAction 241;
  _ ->   case yytoken t of {
    VARID -> YYAction 225;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 131;
    _ -> YYAction yyErr;
  };
};
private yyaction138 t = YYAction (-276);
private yyaction139 t =   case yychar t of {
  ';' -> YYAction (-279);
  '}' -> YYAction (-279);
  _ ->   case yytoken t of {
    EARROW -> YYAction 246;
    WHERE -> YYAction (-279);
    _ -> YYAction yyBrace;
  };
};
private yyaction140 t =   case yychar t of {
  ';' -> YYAction (-338);
  '}' -> YYAction (-338);
  _ ->   case yytoken t of {
    WHERE -> YYAction 183;
    _ -> YYAction yyBrace;
  };
};
private yyaction141 t = YYAction (-35);
private yyaction142 t =   case yychar t of {
  '(' -> YYAction 226;
  '=' -> YYAction 248;
  _ ->   case yytoken t of {
    VARID -> YYAction 225;
    _ -> YYAction yyErr;
  };
};
private yyaction143 t = YYAction (-180);
private yyaction144 t =   case yychar t of {
  '-' -> YYAction 250;
  '(' -> YYAction 144;
  ')' -> YYAction 158;
  ',' -> YYAction 159;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    SOMEOP -> YYAction 121;
    _ -> YYAction yyErr;
  };
};
private yyaction145 t =   case yychar t of {
  ';' -> YYAction 254;
  _ ->   case yytoken t of {
    THEN -> YYAction 253;
    _ -> YYAction yyErr;
  };
};
private yyaction146 t =   case yychar t of {
  '-' -> YYAction 190;
  ';' -> YYAction (-388);
  '}' -> YYAction (-388);
  ')' -> YYAction (-388);
  ',' -> YYAction (-388);
  '|' -> YYAction (-388);
  ']' -> YYAction (-388);
  '=' -> YYAction (-388);
  _ ->   case yytoken t of {
    DCOLON -> YYAction 256;
    SOMEOP -> YYAction 189;
    WHERE -> YYAction (-388);
    THEN -> YYAction (-388);
    ELSE -> YYAction (-388);
    OF -> YYAction (-388);
    ARROW -> YYAction (-388);
    GETS -> YYAction (-388);
    DOTDOT -> YYAction (-388);
    _ -> YYAction yyBrace;
  };
};
private yyaction147 t =   case yytoken t of {
    OF -> YYAction 257;
    _ -> YYAction yyErr;
  };
private yyaction148 t = YYAction (-281);
private yyaction149 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 59;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 23;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction150 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 144;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 262;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction151 t =   case yychar t of {
  '-' -> YYAction 122;
  '(' -> YYAction 123;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  _ ->   case yytoken t of {
    VARID -> YYAction 119;
    SOMEOP -> YYAction 121;
    _ -> YYAction yyErr;
  };
};
private yyaction152 t = YYAction (-32);
private yyaction153 t = YYAction (-33);
private yyaction154 t = YYAction (-34);
private yyaction155 t = YYAction (-209);
private yyaction156 t = YYAction (-395);
private yyaction157 t =   case yychar t of {
  '(' -> YYAction 144;
  ')' -> YYAction 267;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction158 t = YYAction (-430);
private yyaction159 t =   case yychar t of {
  ',' -> YYAction 159;
  ')' -> YYAction (-446);
  _ -> YYAction yyErr;
};
private yyaction160 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 144;
  ')' -> YYAction 269;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction161 t =   case yychar t of {
  '(' -> YYAction 144;
  ')' -> YYAction 271;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction162 t =   case yychar t of {
  ')' -> YYAction 272;
  _ -> YYAction yyErr;
};
private yyaction163 t =   case yychar t of {
  ';' -> YYAction 273;
  ')' -> YYAction 274;
  ',' -> YYAction 275;
  _ -> YYAction yyErr;
};
private yyaction164 t =   case yychar t of {
  '-' -> YYAction 277;
  ';' -> YYAction (-388);
  ')' -> YYAction (-388);
  ',' -> YYAction (-388);
  _ ->   case yytoken t of {
    DCOLON -> YYAction 256;
    SOMEOP -> YYAction 276;
    _ -> YYAction yyErr;
  };
};
private yyaction165 t = YYAction (-441);
private yyaction166 t =   case yychar t of {
  ',' -> YYAction 279;
  '|' -> YYAction 280;
  ']' -> YYAction (-459);
  _ ->   case yytoken t of {
    DOTDOT -> YYAction (-459);
    _ -> YYAction yyErr;
  };
};
private yyaction167 t =   case yychar t of {
  ']' -> YYAction 282;
  _ ->   case yytoken t of {
    DOTDOT -> YYAction 281;
    _ -> YYAction yyErr;
  };
};
private yyaction168 t =   case yychar t of {
  '\\' -> YYAction 63;
  _ ->   case yytoken t of {
    ARROW -> YYAction 283;
    _ -> YYAction yyErr;
  };
};
private yyaction169 t =   case yychar t of {
  '(' -> YYAction 144;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '_' -> YYAction 64;
  '\\' -> YYAction (-406);
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    ARROW -> YYAction (-406);
    _ -> YYAction yyErr;
  };
};
private yyaction170 t = YYAction (-3);
private yyaction171 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 59;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  '}' -> YYAction (-27);
  _ ->   case yytoken t of {
    VARID -> YYAction 23;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    DOCUMENTATION -> YYAction 26;
    IMPORT -> YYAction 27;
    INFIX -> YYAction 28;
    INFIXR -> YYAction 29;
    INFIXL -> YYAction 30;
    NATIVE -> YYAction 31;
    NEWTYPE -> YYAction 32;
    DATA -> YYAction 33;
    CLASS -> YYAction 34;
    INSTANCE -> YYAction 35;
    ABSTRACT -> YYAction 36;
    TYPE -> YYAction 37;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    DERIVE -> YYAction 42;
    LET -> YYAction 43;
    DO -> YYAction 44;
    PRIVATE -> YYAction 45;
    PROTECTED -> YYAction 46;
    PUBLIC -> YYAction 47;
    PURE -> YYAction 48;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyBrace;
  };
};
private yyaction172 t =   case yychar t of {
  '{' -> YYAction 288;
  _ -> YYAction yyErr;
};
private yyaction173 t = YYAction (-345);
private yyaction174 t =   case yychar t of {
  '}' -> YYAction 289;
  _ ->   case yytoken t of {
    VARID -> YYAction 119;
    _ -> YYAction yyBrace;
  };
};
private yyaction175 t = YYAction (-405);
private yyaction176 t = YYAction (-197);
private yyaction177 t = YYAction (-198);
private yyaction178 t = YYAction (-196);
private yyaction179 t =   case yychar t of {
  '-' -> YYAction 177;
  ';' -> YYAction (-199);
  '}' -> YYAction (-199);
  _ ->   case yytoken t of {
    VARID -> YYAction 176;
    SOMEOP -> YYAction 121;
    _ -> YYAction yyBrace;
  };
};
private yyaction180 t = YYAction (-201);
private yyaction181 t =   case yychar t of {
  '(' -> YYAction 240;
  '[' -> YYAction 241;
  _ ->   case yytoken t of {
    VARID -> YYAction 225;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 131;
    FORALL -> YYAction 294;
    _ -> YYAction yyErr;
  };
};
private yyaction182 t =   case yychar t of {
  '(' -> YYAction 123;
  _ ->   case yytoken t of {
    VARID -> YYAction 119;
    _ -> YYAction yyErr;
  };
};
private yyaction183 t =   case yychar t of {
  '{' -> YYAction 303;
  _ -> YYAction yyErr;
};
private yyaction184 t = YYAction (-282);
private yyaction185 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 144;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction186 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 144;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction187 t = YYAction (-344);
private yyaction188 t =   case yychar t of {
  '|' -> YYAction 185;
  ';' -> YYAction (-376);
  '}' -> YYAction (-376);
  _ ->   case yytoken t of {
    WHERE -> YYAction (-376);
    _ -> YYAction yyBrace;
  };
};
private yyaction189 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 144;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction190 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 144;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction191 t = YYAction (-403);
private yyaction192 t =   case yychar t of {
  '{' -> YYAction 312;
  '[' -> YYAction 313;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  _ ->   case yytoken t of {
    VARID -> YYAction 311;
    SOMEOP -> YYAction 121;
    _ -> YYAction yyErr;
  };
};
private yyaction193 t =   case yytoken t of {
    VARID -> YYAction 316;
    _ -> YYAction yyErr;
  };
private yyaction194 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 59;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 23;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    DOCUMENTATION -> YYAction 26;
    IMPORT -> YYAction 27;
    INFIX -> YYAction 28;
    INFIXR -> YYAction 29;
    INFIXL -> YYAction 30;
    NATIVE -> YYAction 31;
    NEWTYPE -> YYAction 32;
    DATA -> YYAction 33;
    CLASS -> YYAction 34;
    INSTANCE -> YYAction 35;
    ABSTRACT -> YYAction 36;
    TYPE -> YYAction 37;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    DERIVE -> YYAction 42;
    LET -> YYAction 43;
    DO -> YYAction 44;
    PRIVATE -> YYAction 45;
    PROTECTED -> YYAction 46;
    PUBLIC -> YYAction 47;
    PURE -> YYAction 48;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction195 t = YYAction (-1);
private yyaction196 t =   case yychar t of {
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  _ ->   case yytoken t of {
    VARID -> YYAction 110;
    QUALIFIER -> YYAction 320;
    SOMEOP -> YYAction 121;
    _ -> YYAction yyErr;
  };
};
private yyaction197 t = YYAction (-25);
private yyaction198 t = YYAction (-13);
private yyaction199 t = YYAction (-181);
private yyaction200 t = YYAction (-178);
private yyaction201 t =   case yychar t of {
  '(' -> YYAction (-168);
  _ ->   case yytoken t of {
    CONID -> YYAction 325;
    _ -> YYAction yyErr;
  };
};
private yyaction202 t =   case yychar t of {
  '(' -> YYAction 204;
  ';' -> YYAction (-142);
  '}' -> YYAction (-142);
  _ ->   case yytoken t of {
    VARID -> YYAction 119;
    PUBLIC -> YYAction 203;
    _ -> YYAction yyBrace;
  };
};
private yyaction203 t =   case yychar t of {
  '(' -> YYAction 204;
  ';' -> YYAction (-142);
  '}' -> YYAction (-142);
  _ ->   case yytoken t of {
    VARID -> YYAction 119;
    PUBLIC -> YYAction 203;
    _ -> YYAction yyBrace;
  };
};
private yyaction204 t =   case yychar t of {
  ')' -> YYAction 331;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 328;
    QUALIFIER -> YYAction 329;
    PUBLIC -> YYAction 330;
    SOMEOP -> YYAction 121;
    _ -> YYAction yyErr;
  };
};
private yyaction205 t = YYAction (-139);
private yyaction206 t =   case yychar t of {
  '(' -> YYAction 339;
  _ -> YYAction yyErr;
};
private yyaction207 t =   case yychar t of {
  '(' -> YYAction 240;
  '[' -> YYAction 241;
  _ ->   case yytoken t of {
    VARID -> YYAction 225;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 131;
    FORALL -> YYAction 294;
    _ -> YYAction yyErr;
  };
};
private yyaction208 t =   case yytoken t of {
    CLASS -> YYAction 343;
    WHERE -> YYAction (-43);
    _ -> YYAction yyErr;
  };
private yyaction209 t =   case yychar t of {
  ')' -> YYAction 345;
  _ -> YYAction yyErr;
};
private yyaction210 t =   case yychar t of {
  ')' -> YYAction 346;
  _ -> YYAction yyErr;
};
private yyaction211 t =   case yychar t of {
  ')' -> YYAction 347;
  _ -> YYAction yyErr;
};
private yyaction212 t =   case yychar t of {
  '.' -> YYAction 348;
  ';' -> YYAction (-5);
  '{' -> YYAction (-5);
  '}' -> YYAction (-5);
  _ ->   case yytoken t of {
    WHERE -> YYAction (-5);
    DCOLON -> YYAction (-5);
    _ -> YYAction yyBrace;
  };
};
private yyaction213 t = YYAction (-6);
private yyaction214 t =   case yytoken t of {
    VARID -> YYAction 212;
    CONID -> YYAction 213;
    QUALIFIER -> YYAction 214;
    PACKAGE -> YYAction 215;
    STRCONST -> YYAction 216;
    _ -> YYAction yyErr;
  };
private yyaction215 t =   case yychar t of {
  '.' -> YYAction 350;
  ';' -> YYAction (-7);
  '{' -> YYAction (-7);
  '}' -> YYAction (-7);
  _ ->   case yytoken t of {
    WHERE -> YYAction (-7);
    DCOLON -> YYAction (-7);
    _ -> YYAction yyBrace;
  };
};
private yyaction216 t = YYAction (-11);
private yyaction217 t =   case yychar t of {
  '}' -> YYAction 351;
  '(' -> YYAction 240;
  '[' -> YYAction 241;
  _ ->   case yytoken t of {
    VARID -> YYAction 225;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 131;
    FORALL -> YYAction 294;
    _ -> YYAction yyBrace;
  };
};
private yyaction218 t = YYAction (-215);
private yyaction219 t = YYAction (-4);
private yyaction220 t = YYAction (-216);
private yyaction221 t = YYAction (-217);
private yyaction222 t =   case yychar t of {
  '{' -> YYAction 217;
  _ ->   case yytoken t of {
    DCOLON -> YYAction (-219);
    _ -> YYAction yyErr;
  };
};
private yyaction223 t = YYAction (-220);
private yyaction224 t =   case yychar t of {
  '(' -> YYAction 240;
  '[' -> YYAction 241;
  _ ->   case yytoken t of {
    VARID -> YYAction 225;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 131;
    FORALL -> YYAction 294;
    _ -> YYAction yyErr;
  };
};
private yyaction225 t = YYAction (-250);
private yyaction226 t =   case yytoken t of {
    VARID -> YYAction 358;
    EXTENDS -> YYAction 359;
    SUPER -> YYAction 360;
    _ -> YYAction yyErr;
  };
private yyaction227 t =   case yychar t of {
  '?' -> YYAction 366;
  '!' -> YYAction 367;
  _ ->   case yytoken t of {
    CONID -> YYAction 361;
    DOCUMENTATION -> YYAction 362;
    PRIVATE -> YYAction 363;
    PROTECTED -> YYAction 364;
    PUBLIC -> YYAction 365;
    _ -> YYAction yyErr;
  };
};
private yyaction228 t =   case yychar t of {
  '=' -> YYAction 372;
  _ -> YYAction yyErr;
};
private yyaction229 t =   case yychar t of {
  '(' -> YYAction 226;
  '.' -> YYAction (-296);
  '=' -> YYAction (-296);
  _ ->   case yytoken t of {
    VARID -> YYAction 225;
    SOMEOP -> YYAction (-296);
    _ -> YYAction yyErr;
  };
};
private yyaction230 t =   case yychar t of {
  '?' -> YYAction 366;
  '!' -> YYAction 367;
  _ ->   case yytoken t of {
    CONID -> YYAction 361;
    DOCUMENTATION -> YYAction 362;
    NATIVE -> YYAction 374;
    PRIVATE -> YYAction 363;
    PROTECTED -> YYAction 364;
    PUBLIC -> YYAction 365;
    PURE -> YYAction 375;
    _ -> YYAction yyErr;
  };
};
private yyaction231 t =   case yychar t of {
  '=' -> YYAction 379;
  _ -> YYAction yyErr;
};
private yyaction232 t =   case yytoken t of {
    CONID -> YYAction 199;
    _ -> YYAction yyErr;
  };
private yyaction233 t =   case yychar t of {
  ',' -> YYAction 380;
  ')' -> YYAction (-265);
  _ -> YYAction yyErr;
};
private yyaction234 t =   case yychar t of {
  ')' -> YYAction 381;
  _ -> YYAction yyErr;
};
private yyaction235 t = YYAction (-264);
private yyaction236 t =   case yytoken t of {
    CONID -> YYAction 382;
    _ -> YYAction yyErr;
  };
private yyaction237 t = YYAction (-271);
private yyaction238 t =   case yychar t of {
  ',' -> YYAction 383;
  ')' -> YYAction (-273);
  _ -> YYAction yyErr;
};
private yyaction239 t =   case yychar t of {
  ')' -> YYAction 384;
  _ -> YYAction yyErr;
};
private yyaction240 t =   case yychar t of {
  '(' -> YYAction 240;
  ')' -> YYAction 387;
  ',' -> YYAction 159;
  '[' -> YYAction 241;
  _ ->   case yytoken t of {
    VARID -> YYAction 385;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 131;
    EXTENDS -> YYAction 359;
    SUPER -> YYAction 360;
    FORALL -> YYAction 294;
    ARROW -> YYAction 386;
    _ -> YYAction yyErr;
  };
};
private yyaction241 t =   case yychar t of {
  '(' -> YYAction 240;
  '[' -> YYAction 241;
  ']' -> YYAction 390;
  _ ->   case yytoken t of {
    VARID -> YYAction 225;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 131;
    FORALL -> YYAction 294;
    _ -> YYAction yyErr;
  };
};
private yyaction242 t = YYAction (-255);
private yyaction243 t = YYAction (-272);
private yyaction244 t = YYAction (-244);
private yyaction245 t = YYAction (-245);
private yyaction246 t =   case yychar t of {
  '(' -> YYAction 392;
  '[' -> YYAction 393;
  _ ->   case yytoken t of {
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 131;
    _ -> YYAction yyErr;
  };
};
private yyaction247 t = YYAction (-280);
private yyaction248 t =   case yychar t of {
  '(' -> YYAction 240;
  '[' -> YYAction 241;
  _ ->   case yytoken t of {
    VARID -> YYAction 225;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 131;
    FORALL -> YYAction 294;
    _ -> YYAction yyErr;
  };
};
private yyaction249 t =   case yychar t of {
  '=' -> YYAction 396;
  _ -> YYAction yyErr;
};
private yyaction250 t =   case yychar t of {
  '(' -> YYAction 144;
  ')' -> YYAction 397;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction251 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 144;
  ')' -> YYAction 398;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction252 t =   case yychar t of {
  '(' -> YYAction 144;
  ')' -> YYAction 399;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction253 t = YYAction (-390);
private yyaction254 t =   case yytoken t of {
    THEN -> YYAction 400;
    _ -> YYAction yyErr;
  };
private yyaction255 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 144;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction256 t =   case yychar t of {
  '(' -> YYAction 240;
  '[' -> YYAction 241;
  _ ->   case yytoken t of {
    VARID -> YYAction 225;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 131;
    FORALL -> YYAction 294;
    _ -> YYAction yyErr;
  };
};
private yyaction257 t =   case yychar t of {
  '{' -> YYAction 403;
  _ -> YYAction yyErr;
};
private yyaction258 t = YYAction (-134);
private yyaction259 t =   case yychar t of {
  ';' -> YYAction (-135);
  '}' -> YYAction (-135);
  _ ->   case yytoken t of {
    WHERE -> YYAction 172;
    _ -> YYAction yyBrace;
  };
};
private yyaction260 t =   case yychar t of {
  ';' -> YYAction 404;
  '}' -> YYAction (-136);
  _ -> YYAction yyBrace;
};
private yyaction261 t =   case yychar t of {
  '}' -> YYAction 405;
  _ -> YYAction yyBrace;
};
private yyaction262 t =   case yychar t of {
  '{' -> YYAction 406;
  _ -> YYAction yyErr;
};
private yyaction263 t =   case yychar t of {
  '=' -> YYAction 408;
  ';' -> YYAction (-370);
  '}' -> YYAction (-370);
  ',' -> YYAction (-370);
  ']' -> YYAction (-370);
  _ ->   case yytoken t of {
    GETS -> YYAction 407;
    _ -> YYAction yyBrace;
  };
};
private yyaction264 t =   case yychar t of {
  ';' -> YYAction 409;
  '}' -> YYAction (-367);
  _ -> YYAction yyBrace;
};
private yyaction265 t = YYAction (-361);
private yyaction266 t =   case yychar t of {
  '}' -> YYAction 410;
  _ -> YYAction yyBrace;
};
private yyaction267 t =   case yychar t of {
  '-' -> YYAction (-434);
  '.' -> YYAction (-434);
  '(' -> YYAction (-434);
  ',' -> YYAction (-206);
  '|' -> YYAction (-434);
  '[' -> YYAction (-434);
  '?' -> YYAction (-434);
  '!' -> YYAction (-434);
  '=' -> YYAction (-434);
  '_' -> YYAction (-434);
  _ ->   case yytoken t of {
    VARID -> YYAction (-434);
    CONID -> YYAction (-434);
    QUALIFIER -> YYAction (-434);
    TRUE -> YYAction (-434);
    FALSE -> YYAction (-434);
    DO -> YYAction (-434);
    INTCONST -> YYAction (-434);
    STRCONST -> YYAction (-434);
    LONGCONST -> YYAction (-434);
    FLTCONST -> YYAction (-434);
    DBLCONST -> YYAction (-434);
    DECCONST -> YYAction (-434);
    CHRCONST -> YYAction (-434);
    REGEXP -> YYAction (-434);
    BIGCONST -> YYAction (-434);
    DCOLON -> YYAction (-206);
    SOMEOP -> YYAction (-434);
    _ -> YYAction yyErr;
  };
};
private yyaction268 t = YYAction (-447);
private yyaction269 t =   case yychar t of {
  '-' -> YYAction (-433);
  '.' -> YYAction (-433);
  '(' -> YYAction (-433);
  ',' -> YYAction (-204);
  '|' -> YYAction (-433);
  '[' -> YYAction (-433);
  '?' -> YYAction (-433);
  '!' -> YYAction (-433);
  '=' -> YYAction (-433);
  '_' -> YYAction (-433);
  _ ->   case yytoken t of {
    VARID -> YYAction (-433);
    CONID -> YYAction (-433);
    QUALIFIER -> YYAction (-433);
    TRUE -> YYAction (-433);
    FALSE -> YYAction (-433);
    DO -> YYAction (-433);
    INTCONST -> YYAction (-433);
    STRCONST -> YYAction (-433);
    LONGCONST -> YYAction (-433);
    FLTCONST -> YYAction (-433);
    DBLCONST -> YYAction (-433);
    DECCONST -> YYAction (-433);
    CHRCONST -> YYAction (-433);
    REGEXP -> YYAction (-433);
    BIGCONST -> YYAction (-433);
    DCOLON -> YYAction (-204);
    SOMEOP -> YYAction (-433);
    _ -> YYAction yyErr;
  };
};
private yyaction270 t =   case yychar t of {
  ')' -> YYAction 411;
  _ -> YYAction yyErr;
};
private yyaction271 t =   case yychar t of {
  '-' -> YYAction (-432);
  '.' -> YYAction (-432);
  '(' -> YYAction (-432);
  ',' -> YYAction (-205);
  '|' -> YYAction (-432);
  '[' -> YYAction (-432);
  '?' -> YYAction (-432);
  '!' -> YYAction (-432);
  '=' -> YYAction (-432);
  '_' -> YYAction (-432);
  _ ->   case yytoken t of {
    VARID -> YYAction (-432);
    CONID -> YYAction (-432);
    QUALIFIER -> YYAction (-432);
    TRUE -> YYAction (-432);
    FALSE -> YYAction (-432);
    DO -> YYAction (-432);
    INTCONST -> YYAction (-432);
    STRCONST -> YYAction (-432);
    LONGCONST -> YYAction (-432);
    FLTCONST -> YYAction (-432);
    DBLCONST -> YYAction (-432);
    DECCONST -> YYAction (-432);
    CHRCONST -> YYAction (-432);
    REGEXP -> YYAction (-432);
    BIGCONST -> YYAction (-432);
    DCOLON -> YYAction (-205);
    SOMEOP -> YYAction (-432);
    _ -> YYAction yyErr;
  };
};
private yyaction272 t = YYAction (-431);
private yyaction273 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 144;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction274 t = YYAction (-440);
private yyaction275 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 144;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction276 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 144;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  ')' -> YYAction (-190);
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction277 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 144;
  ')' -> YYAction 416;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction278 t =   case yychar t of {
  ')' -> YYAction 417;
  _ -> YYAction yyErr;
};
private yyaction279 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 144;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  ')' -> YYAction (-461);
  ']' -> YYAction (-461);
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    DOTDOT -> YYAction (-461);
    _ -> YYAction yyErr;
  };
};
private yyaction280 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 144;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 262;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction281 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 144;
  '[' -> YYAction 60;
  ']' -> YYAction 421;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction282 t = YYAction (-442);
private yyaction283 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 144;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction284 t = YYAction (-385);
private yyaction285 t = YYAction (-384);
private yyaction286 t = YYAction (-407);
private yyaction287 t = YYAction (-28);
private yyaction288 t =   case yychar t of {
  '-' -> YYAction 58;
  '}' -> YYAction 424;
  '(' -> YYAction 59;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 23;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyBrace;
  };
};
private yyaction289 t = YYAction (-428);
private yyaction290 t =   case yychar t of {
  '=' -> YYAction 426;
  '}' -> YYAction (-458);
  ',' -> YYAction (-458);
  _ -> YYAction yyBrace;
};
private yyaction291 t =   case yychar t of {
  '}' -> YYAction 427;
  _ -> YYAction yyBrace;
};
private yyaction292 t =   case yychar t of {
  ',' -> YYAction 428;
  '}' -> YYAction (-448);
  _ -> YYAction yyBrace;
};
private yyaction293 t = YYAction (-200);
private yyaction294 t =   case yychar t of {
  '(' -> YYAction 226;
  _ ->   case yytoken t of {
    VARID -> YYAction 225;
    _ -> YYAction yyErr;
  };
};
private yyaction295 t = YYAction (-202);
private yyaction296 t = YYAction (-227);
private yyaction297 t = YYAction (-228);
private yyaction298 t =   case yychar t of {
  '-' -> YYAction (-234);
  ';' -> YYAction (-234);
  '}' -> YYAction (-234);
  ')' -> YYAction (-234);
  ',' -> YYAction (-234);
  '|' -> YYAction (-234);
  ']' -> YYAction (-234);
  '=' -> YYAction (-234);
  _ ->   case yytoken t of {
    ARROW -> YYAction 430;
    EARROW -> YYAction 431;
    DOCUMENTATION -> YYAction (-234);
    WHERE -> YYAction (-234);
    CLASS -> YYAction (-234);
    THEN -> YYAction (-234);
    ELSE -> YYAction (-234);
    OF -> YYAction (-234);
    THROWS -> YYAction (-234);
    DCOLON -> YYAction (-234);
    GETS -> YYAction (-234);
    DOTDOT -> YYAction (-234);
    SOMEOP -> YYAction (-234);
    _ -> YYAction yyBrace;
  };
};
private yyaction299 t = YYAction (-233);
private yyaction300 t = YYAction (-243);
private yyaction301 t =   case yychar t of {
  '(' -> YYAction 240;
  '[' -> YYAction 241;
  '-' -> YYAction (-319);
  ';' -> YYAction (-319);
  '}' -> YYAction (-319);
  ')' -> YYAction (-319);
  ',' -> YYAction (-319);
  '|' -> YYAction (-319);
  ']' -> YYAction (-319);
  '=' -> YYAction (-319);
  _ ->   case yytoken t of {
    VARID -> YYAction 225;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 131;
    DOCUMENTATION -> YYAction (-319);
    WHERE -> YYAction (-319);
    CLASS -> YYAction (-319);
    THEN -> YYAction (-319);
    ELSE -> YYAction (-319);
    OF -> YYAction (-319);
    THROWS -> YYAction (-319);
    ARROW -> YYAction (-319);
    DCOLON -> YYAction (-319);
    GETS -> YYAction (-319);
    EARROW -> YYAction (-319);
    DOTDOT -> YYAction (-319);
    SOMEOP -> YYAction (-319);
    _ -> YYAction yyBrace;
  };
};
private yyaction302 t = YYAction (-208);
private yyaction303 t =   case yychar t of {
  '-' -> YYAction 58;
  '}' -> YYAction 436;
  '(' -> YYAction 59;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 23;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    DOCUMENTATION -> YYAction 26;
    NATIVE -> YYAction 151;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    PRIVATE -> YYAction 433;
    PROTECTED -> YYAction 434;
    PUBLIC -> YYAction 435;
    PURE -> YYAction 48;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyBrace;
  };
};
private yyaction304 t =   case yychar t of {
  ',' -> YYAction (-370);
  '=' -> YYAction (-370);
  _ ->   case yytoken t of {
    GETS -> YYAction 407;
    ARROW -> YYAction (-370);
    _ -> YYAction yyErr;
  };
};
private yyaction305 t =   case yychar t of {
  ',' -> YYAction 442;
  '=' -> YYAction (-372);
  _ ->   case yytoken t of {
    ARROW -> YYAction (-372);
    _ -> YYAction yyErr;
  };
};
private yyaction306 t =   case yychar t of {
  '=' -> YYAction 444;
  _ ->   case yytoken t of {
    ARROW -> YYAction 443;
    _ -> YYAction yyErr;
  };
};
private yyaction307 t = YYAction (-343);
private yyaction308 t = YYAction (-377);
private yyaction309 t =   case yychar t of {
  '-' -> YYAction 190;
  ';' -> YYAction (-393);
  '}' -> YYAction (-393);
  ')' -> YYAction (-393);
  ',' -> YYAction (-393);
  '|' -> YYAction (-393);
  ']' -> YYAction (-393);
  '=' -> YYAction (-393);
  _ ->   case yytoken t of {
    SOMEOP -> YYAction 189;
    WHERE -> YYAction (-393);
    THEN -> YYAction (-393);
    ELSE -> YYAction (-393);
    OF -> YYAction (-393);
    ARROW -> YYAction (-393);
    DCOLON -> YYAction (-393);
    GETS -> YYAction (-393);
    DOTDOT -> YYAction (-393);
    _ -> YYAction yyBrace;
  };
};
private yyaction310 t =   case yychar t of {
  '-' -> YYAction 190;
  ';' -> YYAction (-394);
  '}' -> YYAction (-394);
  ')' -> YYAction (-394);
  ',' -> YYAction (-394);
  '|' -> YYAction (-394);
  ']' -> YYAction (-394);
  '=' -> YYAction (-394);
  _ ->   case yytoken t of {
    SOMEOP -> YYAction 189;
    WHERE -> YYAction (-394);
    THEN -> YYAction (-394);
    ELSE -> YYAction (-394);
    OF -> YYAction (-394);
    ARROW -> YYAction (-394);
    DCOLON -> YYAction (-394);
    GETS -> YYAction (-394);
    DOTDOT -> YYAction (-394);
    _ -> YYAction yyBrace;
  };
};
private yyaction311 t = YYAction (-412);
private yyaction312 t =   case yytoken t of {
    VARID -> YYAction 446;
    _ -> YYAction yyErr;
  };
private yyaction313 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 144;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction314 t = YYAction (-413);
private yyaction315 t = YYAction (-414);
private yyaction316 t =   case yychar t of {
  '?' -> YYAction 450;
  '=' -> YYAction 451;
  '}' -> YYAction (-456);
  ',' -> YYAction (-456);
  _ ->   case yytoken t of {
    GETS -> YYAction 449;
    _ -> YYAction yyBrace;
  };
};
private yyaction317 t =   case yychar t of {
  '}' -> YYAction 452;
  _ -> YYAction yyBrace;
};
private yyaction318 t =   case yychar t of {
  ',' -> YYAction 453;
  '}' -> YYAction (-451);
  _ -> YYAction yyBrace;
};
private yyaction319 t =   case yychar t of {
  '}' -> YYAction 454;
  _ -> YYAction yyBrace;
};
private yyaction320 t =   case yychar t of {
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  _ ->   case yytoken t of {
    VARID -> YYAction 110;
    QUALIFIER -> YYAction 455;
    _ -> YYAction yyErr;
  };
};
private yyaction321 t =   case yychar t of {
  ')' -> YYAction 457;
  _ -> YYAction yyErr;
};
private yyaction322 t = YYAction (-189);
private yyaction323 t =   case yychar t of {
  ',' -> YYAction 458;
  ')' -> YYAction (-176);
  _ -> YYAction yyErr;
};
private yyaction324 t = YYAction (-188);
private yyaction325 t =   case yychar t of {
  '(' -> YYAction 204;
  ';' -> YYAction (-142);
  '}' -> YYAction (-142);
  _ ->   case yytoken t of {
    VARID -> YYAction 119;
    PUBLIC -> YYAction 203;
    _ -> YYAction yyBrace;
  };
};
private yyaction326 t = YYAction (-141);
private yyaction327 t = YYAction (-146);
private yyaction328 t =   case yychar t of {
  '(' -> YYAction 460;
  ')' -> YYAction (-183);
  ',' -> YYAction (-183);
  _ ->   case yytoken t of {
    VARID -> YYAction (-183);
    CONID -> YYAction (-183);
    SOMEOP -> YYAction (-183);
    _ -> YYAction yyErr;
  };
};
private yyaction329 t =   case yychar t of {
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  _ ->   case yytoken t of {
    VARID -> YYAction 110;
    CONID -> YYAction 111;
    QUALIFIER -> YYAction 461;
    _ -> YYAction yyErr;
  };
};
private yyaction330 t =   case yychar t of {
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 328;
    QUALIFIER -> YYAction 329;
    PUBLIC -> YYAction 330;
    SOMEOP -> YYAction 121;
    _ -> YYAction yyErr;
  };
};
private yyaction331 t = YYAction (-144);
private yyaction332 t =   case yychar t of {
  ')' -> YYAction 463;
  _ -> YYAction yyErr;
};
private yyaction333 t =   case yychar t of {
  ',' -> YYAction 464;
  ')' -> YYAction (-147);
  _ -> YYAction yyErr;
};
private yyaction334 t =   case yychar t of {
  ')' -> YYAction (-156);
  ',' -> YYAction (-156);
  _ ->   case yytoken t of {
    VARID -> YYAction 465;
    CONID -> YYAction 466;
    SOMEOP -> YYAction 121;
    _ -> YYAction yyErr;
  };
};
private yyaction335 t = YYAction (-150);
private yyaction336 t = YYAction (-153);
private yyaction337 t = YYAction (-154);
private yyaction338 t = YYAction (-155);
private yyaction339 t =   case yychar t of {
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 328;
    QUALIFIER -> YYAction 329;
    PUBLIC -> YYAction 330;
    SOMEOP -> YYAction 121;
    _ -> YYAction yyErr;
  };
};
private yyaction340 t = YYAction (-42);
private yyaction341 t = YYAction (-237);
private yyaction342 t =   case yychar t of {
  ';' -> YYAction (-236);
  '}' -> YYAction (-236);
  ')' -> YYAction (-236);
  ',' -> YYAction (-236);
  '|' -> YYAction (-236);
  ']' -> YYAction (-236);
  _ ->   case yytoken t of {
    ARROW -> YYAction 470;
    WHERE -> YYAction (-236);
    CLASS -> YYAction (-236);
    _ -> YYAction yyBrace;
  };
};
private yyaction343 t =   case yychar t of {
  '(' -> YYAction 240;
  '[' -> YYAction 241;
  _ ->   case yytoken t of {
    VARID -> YYAction 225;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 131;
    FORALL -> YYAction 294;
    _ -> YYAction yyErr;
  };
};
private yyaction344 t =   case yytoken t of {
    WHERE -> YYAction 472;
    _ -> YYAction yyErr;
  };
private yyaction345 t = YYAction (-206);
private yyaction346 t = YYAction (-204);
private yyaction347 t = YYAction (-205);
private yyaction348 t =   case yytoken t of {
    VARID -> YYAction 212;
    CONID -> YYAction 213;
    QUALIFIER -> YYAction 214;
    PACKAGE -> YYAction 215;
    STRCONST -> YYAction 216;
    _ -> YYAction yyErr;
  };
private yyaction349 t = YYAction (-10);
private yyaction350 t =   case yytoken t of {
    VARID -> YYAction 212;
    CONID -> YYAction 213;
    QUALIFIER -> YYAction 214;
    PACKAGE -> YYAction 215;
    STRCONST -> YYAction 216;
    _ -> YYAction yyErr;
  };
private yyaction351 t = YYAction (-288);
private yyaction352 t =   case yychar t of {
  ',' -> YYAction 476;
  ';' -> YYAction (-239);
  '}' -> YYAction (-239);
  ')' -> YYAction (-239);
  '|' -> YYAction (-239);
  _ ->   case yytoken t of {
    WHERE -> YYAction (-239);
    _ -> YYAction yyBrace;
  };
};
private yyaction353 t =   case yychar t of {
  '}' -> YYAction 477;
  _ -> YYAction yyBrace;
};
private yyaction354 t = YYAction (-218);
private yyaction355 t =   case yychar t of {
  ';' -> YYAction (-223);
  '}' -> YYAction (-223);
  '|' -> YYAction (-223);
  _ ->   case yytoken t of {
    THROWS -> YYAction 478;
    _ -> YYAction yyBrace;
  };
};
private yyaction356 t =   case yychar t of {
  '|' -> YYAction 479;
  ';' -> YYAction (-224);
  '}' -> YYAction (-224);
  _ -> YYAction yyBrace;
};
private yyaction357 t = YYAction (-226);
private yyaction358 t =   case yytoken t of {
    EXTENDS -> YYAction 480;
    DCOLON -> YYAction 481;
    _ -> YYAction yyErr;
  };
private yyaction359 t =   case yychar t of {
  '(' -> YYAction 240;
  '[' -> YYAction 241;
  _ ->   case yytoken t of {
    VARID -> YYAction 225;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 131;
    FORALL -> YYAction 294;
    _ -> YYAction yyErr;
  };
};
private yyaction360 t =   case yychar t of {
  '(' -> YYAction 240;
  '[' -> YYAction 241;
  _ ->   case yytoken t of {
    VARID -> YYAction 225;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 131;
    _ -> YYAction yyErr;
  };
};
private yyaction361 t =   case yychar t of {
  '{' -> YYAction 484;
  '(' -> YYAction 240;
  '[' -> YYAction 241;
  '?' -> YYAction 485;
  '!' -> YYAction 486;
  ';' -> YYAction (-310);
  '}' -> YYAction (-310);
  '|' -> YYAction (-310);
  _ ->   case yytoken t of {
    VARID -> YYAction 225;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 131;
    DOCUMENTATION -> YYAction (-310);
    WHERE -> YYAction (-310);
    _ -> YYAction yyBrace;
  };
};
private yyaction362 t =   case yychar t of {
  '?' -> YYAction 366;
  '!' -> YYAction 367;
  _ ->   case yytoken t of {
    CONID -> YYAction 361;
    PRIVATE -> YYAction 363;
    PROTECTED -> YYAction 364;
    PUBLIC -> YYAction 365;
    _ -> YYAction yyErr;
  };
};
private yyaction363 t =   case yychar t of {
  '?' -> YYAction 366;
  '!' -> YYAction 367;
  _ ->   case yytoken t of {
    CONID -> YYAction 361;
    _ -> YYAction yyErr;
  };
};
private yyaction364 t =   case yychar t of {
  '?' -> YYAction 366;
  '!' -> YYAction 367;
  _ ->   case yytoken t of {
    CONID -> YYAction 361;
    _ -> YYAction yyErr;
  };
};
private yyaction365 t =   case yychar t of {
  '?' -> YYAction 366;
  '!' -> YYAction 367;
  _ ->   case yytoken t of {
    CONID -> YYAction 361;
    _ -> YYAction yyErr;
  };
};
private yyaction366 t =   case yytoken t of {
    CONID -> YYAction 361;
    _ -> YYAction yyErr;
  };
private yyaction367 t =   case yytoken t of {
    CONID -> YYAction 361;
    _ -> YYAction yyErr;
  };
private yyaction368 t = YYAction (-295);
private yyaction369 t =   case yychar t of {
  ';' -> YYAction (-300);
  '}' -> YYAction (-300);
  '|' -> YYAction (-300);
  _ ->   case yytoken t of {
    DOCUMENTATION -> YYAction 497;
    WHERE -> YYAction (-300);
    _ -> YYAction yyBrace;
  };
};
private yyaction370 t = YYAction (-303);
private yyaction371 t = YYAction (-309);
private yyaction372 t =   case yychar t of {
  '?' -> YYAction 366;
  '!' -> YYAction 367;
  _ ->   case yytoken t of {
    CONID -> YYAction 361;
    DOCUMENTATION -> YYAction 362;
    PRIVATE -> YYAction 363;
    PROTECTED -> YYAction 364;
    PUBLIC -> YYAction 365;
    _ -> YYAction yyErr;
  };
};
private yyaction373 t = YYAction (-297);
private yyaction374 t = YYAction (-284);
private yyaction375 t =   case yytoken t of {
    NATIVE -> YYAction 499;
    _ -> YYAction yyErr;
  };
private yyaction376 t =   case yytoken t of {
    VARID -> YYAction 212;
    CONID -> YYAction 213;
    QUALIFIER -> YYAction 214;
    PACKAGE -> YYAction 215;
    STRCONST -> YYAction 216;
    _ -> YYAction yyErr;
  };
private yyaction377 t = YYAction (-292);
private yyaction378 t =   case yychar t of {
  '|' -> YYAction 502;
  ';' -> YYAction (-298);
  '}' -> YYAction (-298);
  _ ->   case yytoken t of {
    WHERE -> YYAction (-298);
    _ -> YYAction yyBrace;
  };
};
private yyaction379 t =   case yychar t of {
  '?' -> YYAction 366;
  '!' -> YYAction 367;
  _ ->   case yytoken t of {
    CONID -> YYAction 361;
    DOCUMENTATION -> YYAction 362;
    NATIVE -> YYAction 374;
    PRIVATE -> YYAction 363;
    PROTECTED -> YYAction 364;
    PUBLIC -> YYAction 365;
    PURE -> YYAction 375;
    _ -> YYAction yyErr;
  };
};
private yyaction380 t =   case yychar t of {
  ')' -> YYAction (-266);
  _ ->   case yytoken t of {
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 131;
    _ -> YYAction yyErr;
  };
};
private yyaction381 t = YYAction (-269);
private yyaction382 t =   case yychar t of {
  '(' -> YYAction 226;
  _ ->   case yytoken t of {
    VARID -> YYAction 225;
    _ -> YYAction yyErr;
  };
};
private yyaction383 t =   case yychar t of {
  ')' -> YYAction (-274);
  _ ->   case yytoken t of {
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 131;
    _ -> YYAction yyErr;
  };
};
private yyaction384 t = YYAction (-277);
private yyaction385 t =   case yychar t of {
  '(' -> YYAction (-250);
  ')' -> YYAction (-250);
  ',' -> YYAction (-250);
  '|' -> YYAction (-250);
  '[' -> YYAction (-250);
  _ ->   case yytoken t of {
    EXTENDS -> YYAction 480;
    DCOLON -> YYAction 481;
    VARID -> YYAction (-250);
    CONID -> YYAction (-250);
    QUALIFIER -> YYAction (-250);
    ARROW -> YYAction (-250);
    _ -> YYAction yyErr;
  };
};
private yyaction386 t =   case yychar t of {
  ')' -> YYAction 508;
  _ -> YYAction yyErr;
};
private yyaction387 t = YYAction (-257);
private yyaction388 t =   case yychar t of {
  ')' -> YYAction 509;
  ',' -> YYAction 510;
  '|' -> YYAction 511;
  _ -> YYAction yyErr;
};
private yyaction389 t =   case yychar t of {
  ')' -> YYAction 512;
  _ -> YYAction yyErr;
};
private yyaction390 t = YYAction (-256);
private yyaction391 t =   case yychar t of {
  ']' -> YYAction 513;
  _ -> YYAction yyErr;
};
private yyaction392 t =   case yychar t of {
  ')' -> YYAction 387;
  ',' -> YYAction 159;
  _ ->   case yytoken t of {
    ARROW -> YYAction 386;
    _ -> YYAction yyErr;
  };
};
private yyaction393 t =   case yychar t of {
  ']' -> YYAction 390;
  _ -> YYAction yyErr;
};
private yyaction394 t =   case yychar t of {
  '(' -> YYAction 240;
  '[' -> YYAction 241;
  _ ->   case yytoken t of {
    VARID -> YYAction 225;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 131;
    _ -> YYAction yyErr;
  };
};
private yyaction395 t = YYAction (-336);
private yyaction396 t =   case yychar t of {
  '(' -> YYAction 240;
  '[' -> YYAction 241;
  _ ->   case yytoken t of {
    VARID -> YYAction 225;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 131;
    FORALL -> YYAction 294;
    _ -> YYAction yyErr;
  };
};
private yyaction397 t = YYAction (-434);
private yyaction398 t = YYAction (-433);
private yyaction399 t = YYAction (-432);
private yyaction400 t = YYAction (-389);
private yyaction401 t =   case yychar t of {
  ';' -> YYAction 517;
  _ ->   case yytoken t of {
    ELSE -> YYAction 516;
    _ -> YYAction yyErr;
  };
};
private yyaction402 t = YYAction (-387);
private yyaction403 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 144;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction404 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 59;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  '}' -> YYAction (-137);
  _ ->   case yytoken t of {
    VARID -> YYAction 23;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyBrace;
  };
};
private yyaction405 t =   case yytoken t of {
    IN -> YYAction 524;
    _ -> YYAction yyErr;
  };
private yyaction406 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 59;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 23;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction407 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 144;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction408 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 144;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction409 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 144;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  '}' -> YYAction (-368);
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 262;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyBrace;
  };
};
private yyaction410 t = YYAction (-411);
private yyaction411 t = YYAction (-435);
private yyaction412 t =   case yychar t of {
  ';' -> YYAction 529;
  ')' -> YYAction (-462);
  _ -> YYAction yyErr;
};
private yyaction413 t =   case yychar t of {
  ')' -> YYAction 530;
  _ -> YYAction yyErr;
};
private yyaction414 t =   case yychar t of {
  ',' -> YYAction 279;
  ')' -> YYAction (-459);
  ']' -> YYAction (-459);
  _ ->   case yytoken t of {
    DOTDOT -> YYAction (-459);
    _ -> YYAction yyErr;
  };
};
private yyaction415 t =   case yychar t of {
  ')' -> YYAction 531;
  _ -> YYAction yyErr;
};
private yyaction416 t = YYAction (-437);
private yyaction417 t = YYAction (-436);
private yyaction418 t = YYAction (-460);
private yyaction419 t =   case yychar t of {
  ',' -> YYAction 532;
  ']' -> YYAction (-364);
  _ -> YYAction yyErr;
};
private yyaction420 t =   case yychar t of {
  ']' -> YYAction 533;
  _ -> YYAction yyErr;
};
private yyaction421 t = YYAction (-443);
private yyaction422 t =   case yychar t of {
  ']' -> YYAction 534;
  _ -> YYAction yyErr;
};
private yyaction423 t = YYAction (-386);
private yyaction424 t = YYAction (-341);
private yyaction425 t =   case yychar t of {
  '}' -> YYAction 535;
  _ -> YYAction yyBrace;
};
private yyaction426 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 144;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction427 t = YYAction (-429);
private yyaction428 t =   case yychar t of {
  '}' -> YYAction (-450);
  _ ->   case yytoken t of {
    VARID -> YYAction 119;
    _ -> YYAction yyBrace;
  };
};
private yyaction429 t =   case yychar t of {
  '.' -> YYAction 539;
  _ ->   case yytoken t of {
    SOMEOP -> YYAction 538;
    _ -> YYAction yyErr;
  };
};
private yyaction430 t =   case yychar t of {
  '(' -> YYAction 240;
  '[' -> YYAction 241;
  _ ->   case yytoken t of {
    VARID -> YYAction 225;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 131;
    _ -> YYAction yyErr;
  };
};
private yyaction431 t =   case yychar t of {
  '(' -> YYAction 240;
  '[' -> YYAction 241;
  _ ->   case yytoken t of {
    VARID -> YYAction 225;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 131;
    _ -> YYAction yyErr;
  };
};
private yyaction432 t = YYAction (-320);
private yyaction433 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 59;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 23;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    NATIVE -> YYAction 151;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    PURE -> YYAction 48;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction434 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 59;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 23;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    NATIVE -> YYAction 151;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    PURE -> YYAction 48;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction435 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 59;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 23;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    NATIVE -> YYAction 151;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    PURE -> YYAction 48;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction436 t = YYAction (-339);
private yyaction437 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 59;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  ';' -> YYAction (-131);
  '}' -> YYAction (-131);
  _ ->   case yytoken t of {
    VARID -> YYAction 23;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    DOCUMENTATION -> YYAction 26;
    NATIVE -> YYAction 151;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    PRIVATE -> YYAction 433;
    PROTECTED -> YYAction 434;
    PUBLIC -> YYAction 435;
    PURE -> YYAction 48;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyBrace;
  };
};
private yyaction438 t = YYAction (-127);
private yyaction439 t =   case yychar t of {
  '}' -> YYAction 548;
  _ -> YYAction yyBrace;
};
private yyaction440 t =   case yychar t of {
  ';' -> YYAction 549;
  '}' -> YYAction (-121);
  _ -> YYAction yyBrace;
};
private yyaction441 t = YYAction (-133);
private yyaction442 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 144;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  '=' -> YYAction (-374);
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    ARROW -> YYAction (-374);
    _ -> YYAction yyErr;
  };
};
private yyaction443 t = YYAction (-359);
private yyaction444 t = YYAction (-360);
private yyaction445 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 144;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction446 t =   case yychar t of {
  '?' -> YYAction 553;
  '=' -> YYAction 554;
  '}' -> YYAction (-456);
  ',' -> YYAction (-456);
  _ ->   case yytoken t of {
    GETS -> YYAction 552;
    _ -> YYAction yyBrace;
  };
};
private yyaction447 t =   case yychar t of {
  '}' -> YYAction 555;
  _ -> YYAction yyBrace;
};
private yyaction448 t =   case yychar t of {
  ']' -> YYAction 556;
  _ -> YYAction yyErr;
};
private yyaction449 t =   case yychar t of {
  '-' -> YYAction 58;
  '}' -> YYAction 557;
  '(' -> YYAction 144;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyBrace;
  };
};
private yyaction450 t =   case yychar t of {
  '}' -> YYAction 559;
  _ -> YYAction yyBrace;
};
private yyaction451 t =   case yychar t of {
  '-' -> YYAction 58;
  '}' -> YYAction 560;
  '(' -> YYAction 144;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyBrace;
  };
};
private yyaction452 t = YYAction (-418);
private yyaction453 t =   case yychar t of {
  '}' -> YYAction (-453);
  _ ->   case yytoken t of {
    VARID -> YYAction 562;
    _ -> YYAction yyBrace;
  };
};
private yyaction454 t = YYAction (-2);
private yyaction455 t =   case yychar t of {
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  _ ->   case yytoken t of {
    VARID -> YYAction 110;
    _ -> YYAction yyErr;
  };
};
private yyaction456 t = YYAction (-187);
private yyaction457 t = YYAction (-22);
private yyaction458 t =   case yychar t of {
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  _ ->   case yytoken t of {
    VARID -> YYAction 110;
    QUALIFIER -> YYAction 320;
    SOMEOP -> YYAction 121;
    _ -> YYAction yyErr;
  };
};
private yyaction459 t = YYAction (-140);
private yyaction460 t =   case yychar t of {
  ')' -> YYAction 567;
  _ ->   case yytoken t of {
    VARID -> YYAction 465;
    CONID -> YYAction 466;
    PUBLIC -> YYAction 566;
    SOMEOP -> YYAction 121;
    _ -> YYAction yyErr;
  };
};
private yyaction461 t =   case yychar t of {
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  _ ->   case yytoken t of {
    VARID -> YYAction 110;
    CONID -> YYAction 199;
    _ -> YYAction yyErr;
  };
};
private yyaction462 t = YYAction (-158);
private yyaction463 t = YYAction (-145);
private yyaction464 t =   case yychar t of {
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  ')' -> YYAction (-148);
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 328;
    QUALIFIER -> YYAction 329;
    PUBLIC -> YYAction 330;
    SOMEOP -> YYAction 121;
    _ -> YYAction yyErr;
  };
};
private yyaction465 t = YYAction (-165);
private yyaction466 t = YYAction (-166);
private yyaction467 t = YYAction (-167);
private yyaction468 t = YYAction (-157);
private yyaction469 t =   case yychar t of {
  ')' -> YYAction 572;
  _ -> YYAction yyErr;
};
private yyaction470 t =   case yychar t of {
  '(' -> YYAction 240;
  '[' -> YYAction 241;
  _ ->   case yytoken t of {
    VARID -> YYAction 225;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 131;
    FORALL -> YYAction 294;
    _ -> YYAction yyErr;
  };
};
private yyaction471 t = YYAction (-44);
private yyaction472 t =   case yychar t of {
  '{' -> YYAction 574;
  _ -> YYAction yyErr;
};
private yyaction473 t = YYAction (-40);
private yyaction474 t = YYAction (-8);
private yyaction475 t = YYAction (-9);
private yyaction476 t =   case yychar t of {
  '(' -> YYAction 240;
  '[' -> YYAction 241;
  _ ->   case yytoken t of {
    VARID -> YYAction 225;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 131;
    FORALL -> YYAction 294;
    _ -> YYAction yyErr;
  };
};
private yyaction477 t = YYAction (-287);
private yyaction478 t =   case yychar t of {
  '(' -> YYAction 240;
  '[' -> YYAction 241;
  _ ->   case yytoken t of {
    VARID -> YYAction 225;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 131;
    FORALL -> YYAction 294;
    _ -> YYAction yyErr;
  };
};
private yyaction479 t =   case yychar t of {
  '(' -> YYAction 240;
  '[' -> YYAction 241;
  _ ->   case yytoken t of {
    VARID -> YYAction 225;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 131;
    FORALL -> YYAction 294;
    _ -> YYAction yyErr;
  };
};
private yyaction480 t =   case yychar t of {
  '(' -> YYAction 240;
  '[' -> YYAction 241;
  _ ->   case yytoken t of {
    VARID -> YYAction 225;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 131;
    FORALL -> YYAction 294;
    _ -> YYAction yyErr;
  };
};
private yyaction481 t =   case yychar t of {
  '(' -> YYAction 580;
  _ ->   case yytoken t of {
    SOMEOP -> YYAction 579;
    _ -> YYAction yyErr;
  };
};
private yyaction482 t =   case yychar t of {
  ')' -> YYAction 583;
  _ -> YYAction yyErr;
};
private yyaction483 t =   case yychar t of {
  ')' -> YYAction 584;
  _ -> YYAction yyErr;
};
private yyaction484 t =   case yychar t of {
  '?' -> YYAction (-18);
  '!' -> YYAction (-18);
  _ ->   case yytoken t of {
    DOCUMENTATION -> YYAction 1;
    VARID -> YYAction (-18);
    PRIVATE -> YYAction (-18);
    PUBLIC -> YYAction (-18);
    _ -> YYAction yyErr;
  };
};
private yyaction485 t =   case yychar t of {
  '(' -> YYAction 240;
  '[' -> YYAction 241;
  _ ->   case yytoken t of {
    VARID -> YYAction 225;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 131;
    _ -> YYAction yyErr;
  };
};
private yyaction486 t =   case yychar t of {
  '(' -> YYAction 240;
  '[' -> YYAction 241;
  _ ->   case yytoken t of {
    VARID -> YYAction 225;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 131;
    _ -> YYAction yyErr;
  };
};
private yyaction487 t = YYAction (-318);
private yyaction488 t = YYAction (-312);
private yyaction489 t =   case yychar t of {
  '(' -> YYAction 240;
  '[' -> YYAction 241;
  '?' -> YYAction 485;
  '!' -> YYAction 486;
  ';' -> YYAction (-313);
  '}' -> YYAction (-313);
  '|' -> YYAction (-313);
  _ ->   case yytoken t of {
    VARID -> YYAction 225;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 131;
    DOCUMENTATION -> YYAction (-313);
    WHERE -> YYAction (-313);
    _ -> YYAction yyBrace;
  };
};
private yyaction490 t = YYAction (-315);
private yyaction491 t = YYAction (-302);
private yyaction492 t = YYAction (-305);
private yyaction493 t = YYAction (-306);
private yyaction494 t = YYAction (-304);
private yyaction495 t = YYAction (-308);
private yyaction496 t = YYAction (-307);
private yyaction497 t = YYAction (-301);
private yyaction498 t = YYAction (-294);
private yyaction499 t = YYAction (-283);
private yyaction500 t =   case yychar t of {
  '{' -> YYAction 217;
  ';' -> YYAction (-285);
  '}' -> YYAction (-285);
  _ ->   case yytoken t of {
    WHERE -> YYAction (-285);
    _ -> YYAction yyBrace;
  };
};
private yyaction501 t = YYAction (-289);
private yyaction502 t =   case yychar t of {
  '?' -> YYAction 366;
  '!' -> YYAction 367;
  _ ->   case yytoken t of {
    CONID -> YYAction 361;
    DOCUMENTATION -> YYAction 362;
    PRIVATE -> YYAction 363;
    PROTECTED -> YYAction 364;
    PUBLIC -> YYAction 365;
    _ -> YYAction yyErr;
  };
};
private yyaction503 t =   case yytoken t of {
    VARID -> YYAction 212;
    CONID -> YYAction 213;
    QUALIFIER -> YYAction 214;
    PACKAGE -> YYAction 215;
    STRCONST -> YYAction 216;
    _ -> YYAction yyErr;
  };
private yyaction504 t = YYAction (-291);
private yyaction505 t = YYAction (-267);
private yyaction506 t =   case yychar t of {
  ';' -> YYAction (-338);
  '}' -> YYAction (-338);
  _ ->   case yytoken t of {
    WHERE -> YYAction 183;
    _ -> YYAction yyBrace;
  };
};
private yyaction507 t = YYAction (-275);
private yyaction508 t = YYAction (-259);
private yyaction509 t = YYAction (-246);
private yyaction510 t =   case yychar t of {
  '(' -> YYAction 240;
  '[' -> YYAction 241;
  _ ->   case yytoken t of {
    VARID -> YYAction 225;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 131;
    FORALL -> YYAction 294;
    _ -> YYAction yyErr;
  };
};
private yyaction511 t =   case yychar t of {
  '(' -> YYAction 240;
  '[' -> YYAction 241;
  _ ->   case yytoken t of {
    VARID -> YYAction 225;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 131;
    FORALL -> YYAction 294;
    _ -> YYAction yyErr;
  };
};
private yyaction512 t = YYAction (-258);
private yyaction513 t = YYAction (-249);
private yyaction514 t = YYAction (-278);
private yyaction515 t = YYAction (-337);
private yyaction516 t = YYAction (-392);
private yyaction517 t =   case yytoken t of {
    ELSE -> YYAction 598;
    _ -> YYAction yyErr;
  };
private yyaction518 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 144;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction519 t = YYAction (-358);
private yyaction520 t =   case yychar t of {
  '|' -> YYAction 185;
  '=' -> YYAction 444;
  _ ->   case yytoken t of {
    ARROW -> YYAction 443;
    _ -> YYAction yyErr;
  };
};
private yyaction521 t =   case yychar t of {
  ';' -> YYAction 602;
  '}' -> YYAction (-381);
  _ ->   case yytoken t of {
    WHERE -> YYAction 172;
    _ -> YYAction yyBrace;
  };
};
private yyaction522 t =   case yychar t of {
  '}' -> YYAction 604;
  _ -> YYAction yyBrace;
};
private yyaction523 t = YYAction (-138);
private yyaction524 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 144;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction525 t =   case yychar t of {
  '}' -> YYAction 606;
  _ -> YYAction yyBrace;
};
private yyaction526 t = YYAction (-371);
private yyaction527 t = YYAction (-362);
private yyaction528 t = YYAction (-369);
private yyaction529 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 144;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  ')' -> YYAction (-464);
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction530 t = YYAction (-439);
private yyaction531 t = YYAction (-438);
private yyaction532 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 144;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  ']' -> YYAction (-366);
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 262;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction533 t = YYAction (-445);
private yyaction534 t = YYAction (-444);
private yyaction535 t = YYAction (-342);
private yyaction536 t = YYAction (-457);
private yyaction537 t = YYAction (-449);
private yyaction538 t = YYAction (-231);
private yyaction539 t = YYAction (-230);
private yyaction540 t =   case yychar t of {
  '(' -> YYAction 240;
  '[' -> YYAction 241;
  _ ->   case yytoken t of {
    VARID -> YYAction 225;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 131;
    _ -> YYAction yyErr;
  };
};
private yyaction541 t =   case yychar t of {
  '-' -> YYAction (-234);
  ';' -> YYAction (-234);
  '}' -> YYAction (-234);
  ')' -> YYAction (-234);
  ',' -> YYAction (-234);
  '|' -> YYAction (-234);
  ']' -> YYAction (-234);
  '=' -> YYAction (-234);
  _ ->   case yytoken t of {
    ARROW -> YYAction 430;
    DOCUMENTATION -> YYAction (-234);
    WHERE -> YYAction (-234);
    CLASS -> YYAction (-234);
    THEN -> YYAction (-234);
    ELSE -> YYAction (-234);
    OF -> YYAction (-234);
    THROWS -> YYAction (-234);
    DCOLON -> YYAction (-234);
    GETS -> YYAction (-234);
    DOTDOT -> YYAction (-234);
    SOMEOP -> YYAction (-234);
    _ -> YYAction yyBrace;
  };
};
private yyaction542 t = YYAction (-235);
private yyaction543 t = YYAction (-232);
private yyaction544 t = YYAction (-128);
private yyaction545 t = YYAction (-129);
private yyaction546 t = YYAction (-130);
private yyaction547 t = YYAction (-132);
private yyaction548 t = YYAction (-340);
private yyaction549 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 59;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  '}' -> YYAction (-122);
  _ ->   case yytoken t of {
    VARID -> YYAction 23;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    DOCUMENTATION -> YYAction 26;
    NATIVE -> YYAction 151;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    PRIVATE -> YYAction 433;
    PROTECTED -> YYAction 434;
    PUBLIC -> YYAction 435;
    PURE -> YYAction 48;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyBrace;
  };
};
private yyaction550 t = YYAction (-373);
private yyaction551 t = YYAction (-375);
private yyaction552 t =   case yychar t of {
  '-' -> YYAction 58;
  '}' -> YYAction 611;
  '(' -> YYAction 144;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyBrace;
  };
};
private yyaction553 t =   case yychar t of {
  '}' -> YYAction 612;
  _ -> YYAction yyBrace;
};
private yyaction554 t =   case yychar t of {
  '-' -> YYAction 58;
  '}' -> YYAction 613;
  '(' -> YYAction 144;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyBrace;
  };
};
private yyaction555 t = YYAction (-422);
private yyaction556 t = YYAction (-423);
private yyaction557 t = YYAction (-417);
private yyaction558 t = YYAction (-454);
private yyaction559 t = YYAction (-415);
private yyaction560 t = YYAction (-416);
private yyaction561 t = YYAction (-455);
private yyaction562 t =   case yychar t of {
  '=' -> YYAction 615;
  '}' -> YYAction (-456);
  ',' -> YYAction (-456);
  _ ->   case yytoken t of {
    GETS -> YYAction 614;
    _ -> YYAction yyBrace;
  };
};
private yyaction563 t = YYAction (-452);
private yyaction564 t = YYAction (-186);
private yyaction565 t = YYAction (-177);
private yyaction566 t =   case yytoken t of {
    VARID -> YYAction 465;
    CONID -> YYAction 466;
    PUBLIC -> YYAction 566;
    SOMEOP -> YYAction 121;
    _ -> YYAction yyErr;
  };
private yyaction567 t = YYAction (-152);
private yyaction568 t =   case yychar t of {
  ')' -> YYAction 617;
  _ -> YYAction yyErr;
};
private yyaction569 t =   case yychar t of {
  ')' -> YYAction (-159);
  ',' -> YYAction (-159);
  _ ->   case yytoken t of {
    VARID -> YYAction 465;
    CONID -> YYAction 466;
    SOMEOP -> YYAction 121;
    _ -> YYAction yyErr;
  };
};
private yyaction570 t =   case yychar t of {
  ',' -> YYAction 619;
  ')' -> YYAction (-162);
  _ -> YYAction yyErr;
};
private yyaction571 t = YYAction (-149);
private yyaction572 t = YYAction (-143);
private yyaction573 t = YYAction (-238);
private yyaction574 t =   case yychar t of {
  '-' -> YYAction 668;
  ';' -> YYAction 669;
  '{' -> YYAction 670;
  '}' -> YYAction 671;
  '.' -> YYAction 672;
  '(' -> YYAction 673;
  ')' -> YYAction 674;
  ',' -> YYAction 675;
  '|' -> YYAction 676;
  '[' -> YYAction 677;
  ']' -> YYAction 678;
  '?' -> YYAction 679;
  '!' -> YYAction 680;
  '=' -> YYAction 681;
  '\\' -> YYAction 682;
  _ ->   case yytoken t of {
    VARID -> YYAction 620;
    CONID -> YYAction 621;
    QUALIFIER -> YYAction 622;
    DOCUMENTATION -> YYAction 623;
    EXTENDS -> YYAction 624;
    SUPER -> YYAction 625;
    PACKAGE -> YYAction 626;
    IMPORT -> YYAction 627;
    INFIX -> YYAction 628;
    INFIXR -> YYAction 629;
    INFIXL -> YYAction 630;
    NATIVE -> YYAction 631;
    DATA -> YYAction 632;
    WHERE -> YYAction 633;
    CLASS -> YYAction 634;
    INSTANCE -> YYAction 635;
    ABSTRACT -> YYAction 636;
    TYPE -> YYAction 637;
    TRUE -> YYAction 638;
    FALSE -> YYAction 639;
    IF -> YYAction 640;
    THEN -> YYAction 641;
    ELSE -> YYAction 642;
    CASE -> YYAction 643;
    OF -> YYAction 644;
    DERIVE -> YYAction 645;
    LET -> YYAction 646;
    IN -> YYAction 647;
    DO -> YYAction 648;
    FORALL -> YYAction 649;
    PRIVATE -> YYAction 650;
    PROTECTED -> YYAction 651;
    PUBLIC -> YYAction 652;
    PURE -> YYAction 653;
    THROWS -> YYAction 654;
    MUTABLE -> YYAction 655;
    INTCONST -> YYAction 656;
    STRCONST -> YYAction 657;
    LONGCONST -> YYAction 658;
    FLTCONST -> YYAction 659;
    DBLCONST -> YYAction 660;
    CHRCONST -> YYAction 661;
    ARROW -> YYAction 662;
    DCOLON -> YYAction 663;
    GETS -> YYAction 664;
    EARROW -> YYAction 665;
    DOTDOT -> YYAction 666;
    SOMEOP -> YYAction 667;
    _ -> YYAction yyBrace;
  };
};
private yyaction575 t = YYAction (-240);
private yyaction576 t = YYAction (-222);
private yyaction577 t = YYAction (-225);
private yyaction578 t =   case yychar t of {
  ')' -> YYAction 685;
  _ -> YYAction yyErr;
};
private yyaction579 t = YYAction (-262);
private yyaction580 t =   case yychar t of {
  '(' -> YYAction 580;
  _ ->   case yytoken t of {
    SOMEOP -> YYAction 579;
    _ -> YYAction yyErr;
  };
};
private yyaction581 t =   case yychar t of {
  ')' -> YYAction 687;
  _ -> YYAction yyErr;
};
private yyaction582 t =   case yychar t of {
  ')' -> YYAction (-261);
  _ ->   case yytoken t of {
    ARROW -> YYAction 688;
    _ -> YYAction yyErr;
  };
};
private yyaction583 t = YYAction (-253);
private yyaction584 t = YYAction (-254);
private yyaction585 t =   case yychar t of {
  '?' -> YYAction 691;
  '!' -> YYAction 692;
  _ ->   case yytoken t of {
    VARID -> YYAction 119;
    PRIVATE -> YYAction 689;
    PUBLIC -> YYAction 690;
    _ -> YYAction yyErr;
  };
};
private yyaction586 t =   case yychar t of {
  '}' -> YYAction 698;
  _ -> YYAction yyBrace;
};
private yyaction587 t =   case yychar t of {
  ',' -> YYAction 700;
  '}' -> YYAction (-321);
  _ ->   case yytoken t of {
    DOCUMENTATION -> YYAction 699;
    _ -> YYAction yyBrace;
  };
};
private yyaction588 t = YYAction (-317);
private yyaction589 t = YYAction (-316);
private yyaction590 t = YYAction (-314);
private yyaction591 t = YYAction (-286);
private yyaction592 t = YYAction (-299);
private yyaction593 t = YYAction (-290);
private yyaction594 t = YYAction (-270);
private yyaction595 t =   case yychar t of {
  ')' -> YYAction 701;
  _ -> YYAction yyErr;
};
private yyaction596 t =   case yychar t of {
  '|' -> YYAction 702;
  ')' -> YYAction (-241);
  _ -> YYAction yyErr;
};
private yyaction597 t =   case yychar t of {
  ')' -> YYAction 703;
  _ -> YYAction yyErr;
};
private yyaction598 t = YYAction (-391);
private yyaction599 t = YYAction (-397);
private yyaction600 t = YYAction (-379);
private yyaction601 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 144;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction602 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 144;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  '}' -> YYAction (-383);
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyBrace;
  };
};
private yyaction603 t = YYAction (-380);
private yyaction604 t = YYAction (-398);
private yyaction605 t = YYAction (-399);
private yyaction606 t =   case yychar t of {
  ';' -> YYAction (-363);
  '}' -> YYAction (-363);
  ',' -> YYAction (-363);
  ']' -> YYAction (-363);
  _ ->   case yytoken t of {
    IN -> YYAction 524;
    _ -> YYAction yyBrace;
  };
};
private yyaction607 t = YYAction (-463);
private yyaction608 t = YYAction (-365);
private yyaction609 t = YYAction (-229);
private yyaction610 t = YYAction (-123);
private yyaction611 t = YYAction (-421);
private yyaction612 t = YYAction (-419);
private yyaction613 t = YYAction (-420);
private yyaction614 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 144;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction615 t =   case yychar t of {
  '-' -> YYAction 58;
  '(' -> YYAction 144;
  '[' -> YYAction 60;
  '?' -> YYAction 61;
  '!' -> YYAction 62;
  '\\' -> YYAction 63;
  '_' -> YYAction 64;
  _ ->   case yytoken t of {
    VARID -> YYAction 143;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 25;
    TRUE -> YYAction 38;
    FALSE -> YYAction 39;
    IF -> YYAction 40;
    CASE -> YYAction 41;
    LET -> YYAction 43;
    DO -> YYAction 44;
    INTCONST -> YYAction 49;
    STRCONST -> YYAction 50;
    LONGCONST -> YYAction 51;
    FLTCONST -> YYAction 52;
    DBLCONST -> YYAction 53;
    DECCONST -> YYAction 54;
    CHRCONST -> YYAction 55;
    REGEXP -> YYAction 56;
    BIGCONST -> YYAction 57;
    _ -> YYAction yyErr;
  };
};
private yyaction616 t = YYAction (-161);
private yyaction617 t = YYAction (-151);
private yyaction618 t = YYAction (-160);
private yyaction619 t =   case yychar t of {
  ')' -> YYAction (-163);
  _ ->   case yytoken t of {
    VARID -> YYAction 465;
    CONID -> YYAction 466;
    PUBLIC -> YYAction 566;
    SOMEOP -> YYAction 121;
    _ -> YYAction yyErr;
  };
};
private yyaction620 t = YYAction (-47);
private yyaction621 t = YYAction (-48);
private yyaction622 t = YYAction (-49);
private yyaction623 t = YYAction (-52);
private yyaction624 t = YYAction (-50);
private yyaction625 t = YYAction (-51);
private yyaction626 t = YYAction (-53);
private yyaction627 t = YYAction (-54);
private yyaction628 t = YYAction (-55);
private yyaction629 t = YYAction (-56);
private yyaction630 t = YYAction (-57);
private yyaction631 t = YYAction (-58);
private yyaction632 t = YYAction (-59);
private yyaction633 t = YYAction (-60);
private yyaction634 t = YYAction (-61);
private yyaction635 t = YYAction (-62);
private yyaction636 t = YYAction (-63);
private yyaction637 t = YYAction (-64);
private yyaction638 t = YYAction (-65);
private yyaction639 t = YYAction (-66);
private yyaction640 t = YYAction (-67);
private yyaction641 t = YYAction (-68);
private yyaction642 t = YYAction (-69);
private yyaction643 t = YYAction (-70);
private yyaction644 t = YYAction (-71);
private yyaction645 t = YYAction (-72);
private yyaction646 t = YYAction (-73);
private yyaction647 t = YYAction (-74);
private yyaction648 t = YYAction (-75);
private yyaction649 t = YYAction (-76);
private yyaction650 t = YYAction (-77);
private yyaction651 t = YYAction (-78);
private yyaction652 t = YYAction (-79);
private yyaction653 t = YYAction (-80);
private yyaction654 t = YYAction (-81);
private yyaction655 t = YYAction (-82);
private yyaction656 t = YYAction (-83);
private yyaction657 t = YYAction (-84);
private yyaction658 t = YYAction (-85);
private yyaction659 t = YYAction (-86);
private yyaction660 t = YYAction (-87);
private yyaction661 t = YYAction (-88);
private yyaction662 t = YYAction (-89);
private yyaction663 t = YYAction (-90);
private yyaction664 t = YYAction (-91);
private yyaction665 t = YYAction (-92);
private yyaction666 t = YYAction (-93);
private yyaction667 t = YYAction (-94);
private yyaction668 t = YYAction (-103);
private yyaction669 t = YYAction (-104);
private yyaction670 t =   case yychar t of {
  '-' -> YYAction 668;
  ';' -> YYAction 669;
  '{' -> YYAction 670;
  '}' -> YYAction 707;
  '.' -> YYAction 672;
  '(' -> YYAction 673;
  ')' -> YYAction 674;
  ',' -> YYAction 675;
  '|' -> YYAction 676;
  '[' -> YYAction 677;
  ']' -> YYAction 678;
  '?' -> YYAction 679;
  '!' -> YYAction 680;
  '=' -> YYAction 681;
  '\\' -> YYAction 682;
  _ ->   case yytoken t of {
    VARID -> YYAction 620;
    CONID -> YYAction 621;
    QUALIFIER -> YYAction 622;
    DOCUMENTATION -> YYAction 623;
    EXTENDS -> YYAction 624;
    SUPER -> YYAction 625;
    PACKAGE -> YYAction 626;
    IMPORT -> YYAction 627;
    INFIX -> YYAction 628;
    INFIXR -> YYAction 629;
    INFIXL -> YYAction 630;
    NATIVE -> YYAction 631;
    DATA -> YYAction 632;
    WHERE -> YYAction 633;
    CLASS -> YYAction 634;
    INSTANCE -> YYAction 635;
    ABSTRACT -> YYAction 636;
    TYPE -> YYAction 637;
    TRUE -> YYAction 638;
    FALSE -> YYAction 639;
    IF -> YYAction 640;
    THEN -> YYAction 641;
    ELSE -> YYAction 642;
    CASE -> YYAction 643;
    OF -> YYAction 644;
    DERIVE -> YYAction 645;
    LET -> YYAction 646;
    IN -> YYAction 647;
    DO -> YYAction 648;
    FORALL -> YYAction 649;
    PRIVATE -> YYAction 650;
    PROTECTED -> YYAction 651;
    PUBLIC -> YYAction 652;
    PURE -> YYAction 653;
    THROWS -> YYAction 654;
    MUTABLE -> YYAction 655;
    INTCONST -> YYAction 656;
    STRCONST -> YYAction 657;
    LONGCONST -> YYAction 658;
    FLTCONST -> YYAction 659;
    DBLCONST -> YYAction 660;
    CHRCONST -> YYAction 661;
    ARROW -> YYAction 662;
    DCOLON -> YYAction 663;
    GETS -> YYAction 664;
    EARROW -> YYAction 665;
    DOTDOT -> YYAction 666;
    SOMEOP -> YYAction 667;
    _ -> YYAction yyBrace;
  };
};
private yyaction671 t = YYAction (-46);
private yyaction672 t = YYAction (-101);
private yyaction673 t = YYAction (-99);
private yyaction674 t = YYAction (-100);
private yyaction675 t = YYAction (-95);
private yyaction676 t = YYAction (-96);
private yyaction677 t = YYAction (-97);
private yyaction678 t = YYAction (-98);
private yyaction679 t = YYAction (-102);
private yyaction680 t = YYAction (-105);
private yyaction681 t = YYAction (-106);
private yyaction682 t = YYAction (-107);
private yyaction683 t =   case yychar t of {
  '}' -> YYAction 709;
  _ -> YYAction yyBrace;
};
private yyaction684 t =   case yychar t of {
  '-' -> YYAction 668;
  ';' -> YYAction 669;
  '{' -> YYAction 670;
  '.' -> YYAction 672;
  '(' -> YYAction 673;
  ')' -> YYAction 674;
  ',' -> YYAction 675;
  '|' -> YYAction 676;
  '[' -> YYAction 677;
  ']' -> YYAction 678;
  '?' -> YYAction 679;
  '!' -> YYAction 680;
  '=' -> YYAction 681;
  '\\' -> YYAction 682;
  '}' -> YYAction (-108);
  _ ->   case yytoken t of {
    VARID -> YYAction 620;
    CONID -> YYAction 621;
    QUALIFIER -> YYAction 622;
    DOCUMENTATION -> YYAction 623;
    EXTENDS -> YYAction 624;
    SUPER -> YYAction 625;
    PACKAGE -> YYAction 626;
    IMPORT -> YYAction 627;
    INFIX -> YYAction 628;
    INFIXR -> YYAction 629;
    INFIXL -> YYAction 630;
    NATIVE -> YYAction 631;
    DATA -> YYAction 632;
    WHERE -> YYAction 633;
    CLASS -> YYAction 634;
    INSTANCE -> YYAction 635;
    ABSTRACT -> YYAction 636;
    TYPE -> YYAction 637;
    TRUE -> YYAction 638;
    FALSE -> YYAction 639;
    IF -> YYAction 640;
    THEN -> YYAction 641;
    ELSE -> YYAction 642;
    CASE -> YYAction 643;
    OF -> YYAction 644;
    DERIVE -> YYAction 645;
    LET -> YYAction 646;
    IN -> YYAction 647;
    DO -> YYAction 648;
    FORALL -> YYAction 649;
    PRIVATE -> YYAction 650;
    PROTECTED -> YYAction 651;
    PUBLIC -> YYAction 652;
    PURE -> YYAction 653;
    THROWS -> YYAction 654;
    MUTABLE -> YYAction 655;
    INTCONST -> YYAction 656;
    STRCONST -> YYAction 657;
    LONGCONST -> YYAction 658;
    FLTCONST -> YYAction 659;
    DBLCONST -> YYAction 660;
    CHRCONST -> YYAction 661;
    ARROW -> YYAction 662;
    DCOLON -> YYAction 663;
    GETS -> YYAction 664;
    EARROW -> YYAction 665;
    DOTDOT -> YYAction 666;
    SOMEOP -> YYAction 667;
    _ -> YYAction yyBrace;
  };
};
private yyaction685 t = YYAction (-252);
private yyaction686 t =   case yychar t of {
  ')' -> YYAction 711;
  _ -> YYAction yyErr;
};
private yyaction687 t = YYAction (-251);
private yyaction688 t =   case yychar t of {
  '(' -> YYAction 580;
  _ ->   case yytoken t of {
    SOMEOP -> YYAction 579;
    _ -> YYAction yyErr;
  };
};
private yyaction689 t =   case yychar t of {
  '?' -> YYAction 691;
  '!' -> YYAction 692;
  _ ->   case yytoken t of {
    VARID -> YYAction 119;
    _ -> YYAction yyErr;
  };
};
private yyaction690 t =   case yychar t of {
  '?' -> YYAction 691;
  '!' -> YYAction 692;
  _ ->   case yytoken t of {
    VARID -> YYAction 119;
    _ -> YYAction yyErr;
  };
};
private yyaction691 t =   case yytoken t of {
    VARID -> YYAction 119;
    _ -> YYAction yyErr;
  };
private yyaction692 t =   case yytoken t of {
    VARID -> YYAction 119;
    _ -> YYAction yyErr;
  };
private yyaction693 t = YYAction (-335);
private yyaction694 t =   case yytoken t of {
    DCOLON -> YYAction 717;
    _ -> YYAction yyErr;
  };
private yyaction695 t =   case yychar t of {
  ',' -> YYAction 718;
  _ ->   case yytoken t of {
    DCOLON -> YYAction (-327);
    _ -> YYAction yyErr;
  };
};
private yyaction696 t = YYAction (-329);
private yyaction697 t = YYAction (-332);
private yyaction698 t = YYAction (-311);
private yyaction699 t =   case yychar t of {
  '}' -> YYAction (-323);
  '?' -> YYAction (-18);
  '!' -> YYAction (-18);
  _ ->   case yytoken t of {
    DOCUMENTATION -> YYAction 1;
    VARID -> YYAction (-18);
    PRIVATE -> YYAction (-18);
    PUBLIC -> YYAction (-18);
    _ -> YYAction yyBrace;
  };
};
private yyaction700 t =   case yychar t of {
  '}' -> YYAction (-322);
  '?' -> YYAction (-18);
  '!' -> YYAction (-18);
  _ ->   case yytoken t of {
    DOCUMENTATION -> YYAction 1;
    VARID -> YYAction (-18);
    PRIVATE -> YYAction (-18);
    PUBLIC -> YYAction (-18);
    _ -> YYAction yyBrace;
  };
};
private yyaction701 t = YYAction (-247);
private yyaction702 t =   case yychar t of {
  '(' -> YYAction 240;
  '[' -> YYAction 241;
  _ ->   case yytoken t of {
    VARID -> YYAction 225;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 131;
    FORALL -> YYAction 294;
    _ -> YYAction yyErr;
  };
};
private yyaction703 t = YYAction (-248);
private yyaction704 t = YYAction (-378);
private yyaction705 t = YYAction (-382);
private yyaction706 t = YYAction (-164);
private yyaction707 t =   case yychar t of {
  '-' -> YYAction 668;
  ';' -> YYAction 669;
  '{' -> YYAction 670;
  '.' -> YYAction 672;
  '(' -> YYAction 673;
  ')' -> YYAction 674;
  ',' -> YYAction 675;
  '|' -> YYAction 676;
  '[' -> YYAction 677;
  ']' -> YYAction 678;
  '?' -> YYAction 679;
  '!' -> YYAction 680;
  '=' -> YYAction 681;
  '\\' -> YYAction 682;
  '}' -> YYAction (-112);
  _ ->   case yytoken t of {
    VARID -> YYAction 620;
    CONID -> YYAction 621;
    QUALIFIER -> YYAction 622;
    DOCUMENTATION -> YYAction 623;
    EXTENDS -> YYAction 624;
    SUPER -> YYAction 625;
    PACKAGE -> YYAction 626;
    IMPORT -> YYAction 627;
    INFIX -> YYAction 628;
    INFIXR -> YYAction 629;
    INFIXL -> YYAction 630;
    NATIVE -> YYAction 631;
    DATA -> YYAction 632;
    WHERE -> YYAction 633;
    CLASS -> YYAction 634;
    INSTANCE -> YYAction 635;
    ABSTRACT -> YYAction 636;
    TYPE -> YYAction 637;
    TRUE -> YYAction 638;
    FALSE -> YYAction 639;
    IF -> YYAction 640;
    THEN -> YYAction 641;
    ELSE -> YYAction 642;
    CASE -> YYAction 643;
    OF -> YYAction 644;
    DERIVE -> YYAction 645;
    LET -> YYAction 646;
    IN -> YYAction 647;
    DO -> YYAction 648;
    FORALL -> YYAction 649;
    PRIVATE -> YYAction 650;
    PROTECTED -> YYAction 651;
    PUBLIC -> YYAction 652;
    PURE -> YYAction 653;
    THROWS -> YYAction 654;
    MUTABLE -> YYAction 655;
    INTCONST -> YYAction 656;
    STRCONST -> YYAction 657;
    LONGCONST -> YYAction 658;
    FLTCONST -> YYAction 659;
    DBLCONST -> YYAction 660;
    CHRCONST -> YYAction 661;
    ARROW -> YYAction 662;
    DCOLON -> YYAction 663;
    GETS -> YYAction 664;
    EARROW -> YYAction 665;
    DOTDOT -> YYAction 666;
    SOMEOP -> YYAction 667;
    _ -> YYAction yyBrace;
  };
};
private yyaction708 t =   case yychar t of {
  '}' -> YYAction 723;
  _ -> YYAction yyBrace;
};
private yyaction709 t = YYAction (-45);
private yyaction710 t = YYAction (-109);
private yyaction711 t = YYAction (-263);
private yyaction712 t = YYAction (-260);
private yyaction713 t = YYAction (-331);
private yyaction714 t = YYAction (-330);
private yyaction715 t = YYAction (-334);
private yyaction716 t = YYAction (-333);
private yyaction717 t =   case yychar t of {
  '(' -> YYAction 240;
  '[' -> YYAction 241;
  _ ->   case yytoken t of {
    VARID -> YYAction 225;
    CONID -> YYAction 24;
    QUALIFIER -> YYAction 131;
    FORALL -> YYAction 294;
    _ -> YYAction yyErr;
  };
};
private yyaction718 t =   case yychar t of {
  '?' -> YYAction 691;
  '!' -> YYAction 692;
  _ ->   case yytoken t of {
    VARID -> YYAction 119;
    PRIVATE -> YYAction 689;
    PUBLIC -> YYAction 690;
    _ -> YYAction yyErr;
  };
};
private yyaction719 t = YYAction (-325);
private yyaction720 t = YYAction (-324);
private yyaction721 t = YYAction (-242);
private yyaction722 t = YYAction (-113);
private yyaction723 t =   case yychar t of {
  '-' -> YYAction 668;
  ';' -> YYAction 669;
  '{' -> YYAction 670;
  '.' -> YYAction 672;
  '(' -> YYAction 673;
  ')' -> YYAction 674;
  ',' -> YYAction 675;
  '|' -> YYAction 676;
  '[' -> YYAction 677;
  ']' -> YYAction 678;
  '?' -> YYAction 679;
  '!' -> YYAction 680;
  '=' -> YYAction 681;
  '\\' -> YYAction 682;
  '}' -> YYAction (-110);
  _ ->   case yytoken t of {
    VARID -> YYAction 620;
    CONID -> YYAction 621;
    QUALIFIER -> YYAction 622;
    DOCUMENTATION -> YYAction 623;
    EXTENDS -> YYAction 624;
    SUPER -> YYAction 625;
    PACKAGE -> YYAction 626;
    IMPORT -> YYAction 627;
    INFIX -> YYAction 628;
    INFIXR -> YYAction 629;
    INFIXL -> YYAction 630;
    NATIVE -> YYAction 631;
    DATA -> YYAction 632;
    WHERE -> YYAction 633;
    CLASS -> YYAction 634;
    INSTANCE -> YYAction 635;
    ABSTRACT -> YYAction 636;
    TYPE -> YYAction 637;
    TRUE -> YYAction 638;
    FALSE -> YYAction 639;
    IF -> YYAction 640;
    THEN -> YYAction 641;
    ELSE -> YYAction 642;
    CASE -> YYAction 643;
    OF -> YYAction 644;
    DERIVE -> YYAction 645;
    LET -> YYAction 646;
    IN -> YYAction 647;
    DO -> YYAction 648;
    FORALL -> YYAction 649;
    PRIVATE -> YYAction 650;
    PROTECTED -> YYAction 651;
    PUBLIC -> YYAction 652;
    PURE -> YYAction 653;
    THROWS -> YYAction 654;
    MUTABLE -> YYAction 655;
    INTCONST -> YYAction 656;
    STRCONST -> YYAction 657;
    LONGCONST -> YYAction 658;
    FLTCONST -> YYAction 659;
    DBLCONST -> YYAction 660;
    CHRCONST -> YYAction 661;
    ARROW -> YYAction 662;
    DCOLON -> YYAction 663;
    GETS -> YYAction 664;
    EARROW -> YYAction 665;
    DOTDOT -> YYAction 666;
    SOMEOP -> YYAction 667;
    _ -> YYAction yyBrace;
  };
};
private yyaction724 t = YYAction (-326);
private yyaction725 t = YYAction (-328);
private yyaction726 t = YYAction (-111);
private reduce1 =  \d\(a,p)\w\b     -> do {
                                                        changeST Global.{sub <- SubSt.{
                                                            thisPos = p}};
                                                        YYM.pure $ Program.Module (a,b,d) }
;
private reduce2 =  \d\(a,p)\w\_\b\_ -> do {
                                                        changeST Global.{sub <- SubSt.{
                                                            thisPos = p}};
                                                        YYM.pure $ Program.Module (a,b,d) }
;
private reduce3 =  \d\p\b\_ -> do {
                                                        changeST Global.{sub <- SubSt.{
                                                            thisPos = yyline p}};
                                                        YYM.pure $ Program.Module ("Main", b, d); }
;
private reduce4 =  \r -> do { g <- getST; pure (substRuntime g r) }
;
private reduce5 =  \t -> Token.value t 
;
private reduce6 =  \t -> Token.value t 
;
private reduce7 =  \t -> Token.value t 
;
private reduce8 =  \a\_\c -> Token.value a ++ "." ++ c 
;
private reduce9 =  \a\_\c -> Token.value a ++ "." ++ c 
;
private reduce10 =  \a\c   -> Token.value a ++ "." ++ c 
;
private reduce11 =  \x -> let s = Token.value x; i = length s - 1 in substr s 1 i 
;
private reduce12 =  \t     -> do {
                                                changeST Global.{sub <- SubSt.{
                                                    idKind <- insert (KeyTk t) (Left())}};
                                                YYM.pure (Token.value t, yyline t) }
;
private reduce13 =  \a\_\(c,p) -> (repljavakws (Token.value a) ++ "." ++ c,
                                                 (yyline a).merge p) 
;
private reduce14 =  \a\(c,p)   -> (Token.value a ++ "." ++ c,
                                                 (yyline a).merge p) 
;
private reduce15 =  \(nm, pos) -> (magicPack nm, pos) 
;
private reduce16 =  Token.value 
;
private reduce17 =  \b\a   -> (Token.value b ++ "\n" ++ a) 
;
private reduce18 =  Nothing 
;
private reduce19 =  Just 
;
private reduce20 =  \p\b        -> (fst b, snd b) 
;
private reduce21 =  \p\_\b   -> do {
                                                    g <- getST;
                                                    changeST Global.{options = g.options.{
                                                        flags = setFlag g.options.flags INPRELUDE}};
                                                    YYM.pure (fst b, snd b) }
;
private reduce22 =  \p\vs\v\qs\_ -> do {
                                                     g <- getST;
                                                     let {clause = unwords vs};
                                                     let {expected = ["inline" , "inline candidates"]};
                                                     when (clause `notElem` expected) do {
                                                        yyerror (yyline v) (show (head expected) ++ " expected instead of " ++ show clause)
                                                     };
                                                     changeST Global.{sub <- SubSt.{
                                                            toExport = qs}};
                                                     YYM.pure p;}
                                                 
;
private reduce23 =  Token.value 
;
private reduce24 =  single 
;
private reduce25 =  (:) 
;
private reduce27 =  const 
;
private reduce28 =  \a\_\b -> a ++ b 
;
private reduce29 =  single 
;
private reduce32 =  \_\ds -> map (updVis Private) ds 
;
private reduce33 =  \_\ds -> map (updVis Protected) ds 
;
private reduce34 =  \_\ds -> map (updVis Public) ds 
;
private reduce35 =  \_\(d::Def) -> [d.{ctrs <- map updCtr}] 
;
private reduce36 =  single 
;
private reduce37 =  single 
;
private reduce38 =  single 
;
private reduce40 =  \_\m\t\i\js -> ModDcl {pos = yyline m, extending=t, implementing=i, code=js }
;
private reduce41 =  Nothing 
;
private reduce42 =  \a\b -> Just b 
;
private reduce43 =  [] 
;
private reduce44 =  \_\taus -> taus 
;
private reduce45 =  \_\_\c\_ -> c  
;
private reduce46 =  \_\_\_   -> [] 
;
private reduce108 =  single 
;
private reduce109 =  (:) 
;
private reduce110 =  \a\b\c -> a:(b++[c]) 
;
private reduce111 =  \a\b\c\d -> (a:b)++(c:d) 
;
private reduce112 =  \a\b -> [a,b] 
;
private reduce113 =  \a\b\cs -> a:b:cs 
;
private reduce114 =  \t -> DocDcl {pos = yyline t, text = t.value}
;
private reduce115 =  single 
;
private reduce116 =  single 
;
private reduce117 =  single 
;
private reduce118 =  single 
;
private reduce119 =  single 
;
private reduce122 =  const 
;
private reduce123 =  \d\_\ds -> d ++ ds 
;
private reduce125 =  single 
;
private reduce128 =  \_\ds -> map (updVis Private) ds 
;
private reduce129 =  \_\ds -> map (updVis Protected) ds 
;
private reduce130 =  \_\ds -> map (updVis Public) ds 
;
private reduce131 =  single 
;
private reduce132 =  (:) 
;
private reduce137 =  const 
;
private reduce138 =  \ds1\_\ds2 -> ds1 ++ ds2 
;
private reduce139 =  \i\b\c -> ImpDcl {pos=snd b, pack=fst b, imports=c, as=Nothing} 
;
private reduce140 =  \i\p\a\c\l -> do
            when (Token.value a != "as") do
                yyerror (yyline a) (show "as" ++ " expected instead of " ++ show (Token.value a))
            changeST Global.{sub <- SubSt.{idKind <- insert (KeyTk c) (Left()) }}
            YYM.pure ImpDcl {pos = snd p, pack = fst p, imports = l, as = Just (Token.value c)}
        
;
private reduce141 =  \i\p\c\l -> do
            changeST Global.{sub <- SubSt.{idKind <- insert (KeyTk c) (Left()) }}
            YYM.pure ImpDcl {pos = snd p, pack = fst p, imports = l, as = Just (Token.value c)}
        
;
private reduce142 =  linkAll 
;
private reduce143 =  \v\_\is\_ -> do
            when ( v.value `notElem` [ "except", "excluding", "without", "außer", "ohne", "hiding" ]) do
                yyerror (yyline v) (show "hiding" ++ " expected instead of " ++ show v.value)
            YYM.pure linkAll.{items=is}
        
;
private reduce144 =  \_\_    -> linkNone 
;
private reduce145 =  \_\is\_ -> linkNone.{items = is}  
;
private reduce146 =  \_\il   -> ImportList.{publik = true} il 
;
private reduce147 =  single 
;
private reduce148 =  \s\_ -> [s] 
;
private reduce149 =  liste  
;
private reduce150 =  \v        -> protoItem.{ name = v } 
;
private reduce151 =  \v\_\ms\_ -> protoItem.{ name = Simple v, members = Just ms} 
;
private reduce152 =  \v\_\_    -> protoItem.{ name = Simple v, members = Just []} 
;
private reduce153 =  \v        -> protoItem.{ name = v } 
;
private reduce154 =  \t        -> protoItem.{ name = opSname t } 
;
private reduce155 =  \v        -> protoItem.{ name = Simple v} 
;
private reduce156 =  \s      -> ImportItem.{alias = (enclosed . Token.value . SName.id . ImportItem.name) s} s
;
private reduce157 =  \s\a    -> ImportItem.{alias = enclosed (Token.value a)} s 
;
private reduce158 =  \_\s    -> ImportItem.export s 
;
private reduce159 =  \v     -> protoItem.{ name  = Simple v,
                                                alias = enclosed (Token.value v)} 
;
private reduce160 =  \v\a   -> protoItem.{ name  = Simple v,
                                                alias = enclosed (Token.value a)} 
;
private reduce161 =  \_\s   -> ImportItem.export s 
;
private reduce162 =  single 
;
private reduce163 =  \s\_ -> [s] 
;
private reduce164 =  liste  
;
private reduce167 =  \v -> do { op <- unqualified v; pure op }
;
private reduce170 =  Token.{tokid = VARID} 
;
private reduce171 =  Token.{tokid = VARID} 
;
private reduce172 =  Token.{tokid = VARID} 
;
private reduce173 =  Token.{tokid = VARID} 
;
private reduce174 =  Token.{tokid = VARID} 
;
private reduce175 =  Token.{tokid = VARID} 
;
private reduce176 =  single 
;
private reduce177 =  liste  
;
private reduce178 =  \n\t\v     -> With2 n t v
;
private reduce179 =  \t\v       -> With1 t v
;
private reduce180 =  \v         -> Simple v 
;
private reduce181 =  \n\t\v     -> With2 n t v
;
private reduce182 =  \t\v       -> With1 t v
;
private reduce183 =  \v         -> Simple v 
;
private reduce186 =  \n\t\v     -> With2 n t v
;
private reduce187 =  \t\v       -> With1 t v
;
private reduce188 =  Simple  
;
private reduce189 =  opSname 
;
private reduce193 =  \f\i -> do
                                    t <- infixop (yyline i) NOP1 (Token.value i)
                                    YYM.pure (FixDcl {pos=Pos f i, opid=t, ops=[]}) 
;
private reduce194 =  \f\i -> do
                                    t <- infixop (yyline i) LOP1 (Token.value i)
                                    YYM.pure (FixDcl {pos=Pos f i, opid=t, ops=[]}) 
;
private reduce195 =  \f\i -> do
                                    t <- infixop (yyline i) ROP1 (Token.value i)
                                    YYM.pure (FixDcl {pos=Pos f i, opid=t, ops=[]}) 
;
private reduce196 =  Token.value 
;
private reduce197 =  Token.value 
;
private reduce198 =  Token.value 
;
private reduce199 =  single  
;
private reduce200 =  (:) 
;
private reduce201 =  \(def::Def)\o -> def.{ops = o}
;
private reduce202 =  \as\_\s -> map (annotation s) as 
;
private reduce204 =  \_\a\_ -> do unqualified a 
;
private reduce205 =  \_\a\_ -> a 
;
private reduce206 =  \_\a\_ -> a 
;
private reduce207 =  single   
;
private reduce208 =  liste    
;
private reduce209 =  \_\(d::Def) -> d.{isPure = true} 
;
private reduce214 =  \o -> do unqualified o 
;
private reduce216 =  \o -> do unqualified o >>= pure . _.value 
;
private reduce217 =  Token.value 
;
private reduce218 =  \f\j\g -> (f,j,Just g) 
;
private reduce219 =  \f\j -> (f,j,Nothing) 
;
private reduce220 =  \f\g -> (f,Token.value f, Just g)  
;
private reduce221 =  \f   -> (f,Token.value f, Nothing) 
;
private reduce222 =  \a\_\c -> (a, c) 
;
private reduce223 =  \a -> (a, [])    
;
private reduce224 =  single 
;
private reduce225 =  liste 
;
private reduce226 =  \_\(fr,jv,ga)\col\t ->
                    NatDcl {pos=yyline fr, vis=Public, name=fr.value,
                                                meth=jv, txs=t, isPure=false,
                                                gargs = ga, 
                                                doc=Nothing}
;
private reduce228 =  ForAll [] 
;
private reduce229 =  \_\vs\_\r      -> ForAll  vs  r 
;
private reduce231 =  \dot -> do
                                        when (Token.value dot != "•") do
                                            yyerror (yyline dot)
                                                ("'.' expected instead of " ++ show dot.value)
                                        YYM.pure dot
                                    
;
private reduce232 =  \tau\t\rho -> do
                                        context <- tauToCtx tau
                                        YYM.pure (Rho.{context} rho)
                                     
;
private reduce234 =  RhoTau [] 
;
private reduce235 =  \a\_\b     -> case a of
                                            TSig s -> RhoFun [] s b 
                                            _ -> RhoFun [] (ForAll [] (RhoTau [] a)) b 
;
private reduce237 =  TSig 
;
private reduce238 =  \a\f\b ->  case a of
                            TSig s -> TSig (ForAll [] (RhoFun [] s (RhoTau [] b))) 
                            _      -> TApp (TApp (TCon (yyline f) (fromBase f.{tokid=CONID, value="->"})) a) b 
                         
;
private reduce239 =  single 
;
private reduce240 =  liste  
;
private reduce241 =  single 
;
private reduce242 =  liste  
;
private reduce243 =  \taus -> Tau.mkapp (head taus) (tail taus) 
;
private reduce245 =  \(tn::SName) -> TCon (yyline tn.id) tn
;
private reduce246 =  \_\t\_ -> t 
;
private reduce247 = \_\t\(c::Token)\ts\_ ->
                            let
                                tus = t:ts;
                                i = length tus;
                                tname = fromBase c.{tokid=CONID, value=tuple i}
                            in  (TCon (yyline c) tname).mkapp tus
                        
;
private reduce248 =  \_\t\e\ts\_ -> mkEither (yyline e) t ts 
;
private reduce249 = \a\t\_ -> TApp (TCon (yyline a)
                                             (fromBase a.{tokid=CONID, value="[]"}))
                                        t 
;
private reduce250 =  \n          -> TVar (yyline n) KVar (Token.value n)  
;
private reduce251 =  \_\n\_\k\_  -> TVar (yyline n) k    (Token.value n)  
;
private reduce252 =  \_\v\x\ks\_ -> TVar (yyline v) (KGen ks) (v.value)   
;
private reduce253 =  \_\x\ks\_   -> TVar (yyline x) (KGen ks) ("<")       
;
private reduce254 =  \_\x\k\_    -> TVar (yyline x) (KGen [k]) (">")      
;
private reduce256 =  \(a::Token)\_ -> fromBase a.{tokid=CONID, value="[]"} 
;
private reduce257 =  \(a::Token)\_ -> fromBase a.{tokid=CONID, value="()"} 
;
private reduce258 =  \(z::Token)\n\_ -> fromBase z.{tokid=CONID, value=tuple (n+1)} 
;
private reduce259 =  \_\(a::Token)\_ -> fromBase a.{tokid=CONID, value="->"} 
;
private reduce260 =  \a\_\c -> KApp a c 
;
private reduce262 =  \star -> do
                                let w = Token.value star
                                when  (w != "*") do
                                    yyerror (yyline star) 
                                            ("expected `*`, found `" ++ w ++ "`") 
                                pure KType
                            
;
private reduce263 =  \_\b\_ -> b 
;
private reduce264 =  \c\v -> Ctx {pos=Pos (SName.id c) v.pos.last, cname=c, tau=v} 
;
private reduce265 =  single 
;
private reduce266 =  \c\_ -> [c] 
;
private reduce267 =  liste  
;
private reduce268 =  single 
;
private reduce269 =  \_\x\_ -> x 
;
private reduce270 = 
        \_\ctxs\_\c\v\defs -> do
            sups <- classContext (Token.value c) ctxs (v::TauS).var
            pure ClaDcl{
                    pos = yyline c, 
                    vis = Public,
                    name = Token.value c,
                    clvar = v,
                    supers = sups,
                    defs,
                    doc = Nothing}
    
;
private reduce271 = 
        \kw\ctxs\defs -> case ctxs of
            Ctx{pos,cname,tau}:rest -> do
                unless (null rest) 
                    (yyerror (yyline kw) "classname missing after contexts")
                when (SName.{ty?} cname)
                    (yyerror (yyline cname.id) "classname must not be qualified") 
                pure ClaDcl {pos, vis = Public, name=cname.id.value,
                               clvar = tau, supers = [],
                               defs, doc = Nothing}
            _ -> Prelude.error "fatal: empty ccontext (cannot happen)" 
    
;
private reduce272 =  \c\t -> Ctx {pos=Pos (SName.id c) t.getpos.last, cname=c, tau=t} 
;
private reduce273 =  single 
;
private reduce274 =  \c\_ -> [c] 
;
private reduce275 =  liste  
;
private reduce276 =  single 
;
private reduce277 =  \_\x\_ -> x 
;
private reduce278 = 
        \ctxs\ea\cls\tau -> InsDcl {
            pos = yyline ea,
            vis = Public,
            clas = cls,
            typ = ForAll [] (RhoTau ctxs tau),
            defs = [],
            doc = Nothing}
    
;
private reduce279 = 
        \ctxs -> case ctxs of
            Ctx{pos, cname, tau}:rest -> do
                unless (null rest) 
                        (yyerror pos "classname missing after instance contexts")
                pure InsDcl {
                    pos, vis = Public, clas = cname,
                    typ = ForAll [] (RhoTau [] tau),
                    defs = [],
                    doc = Nothing,
                    }
            _ -> Prelude.error "fatal: empty instance context"
    
;
private reduce280 = 
        \ins\head\defs -> (head::Def).{defs, pos = yyline ins}
    
;
private reduce281 =  
        \d\(i::Def) -> DrvDcl {pos = yyline d, vis = Public, clas=i.clas, typ=i.typ, doc=Nothing}
    
;
private reduce282 =  \def\defs -> (def::Def).{defs = defs} 
;
private reduce283 =  \_\_ -> true  
;
private reduce284 =  \_   -> false 
;
private reduce285 =  \x     ->  (x, Nothing) 
;
private reduce286 =  \x\gs  ->  (x, Just gs) 
;
private reduce287 =  \_\ts\_   -> ts 
;
private reduce288 =  \_\_      -> [] 
;
private reduce289 = 
        \dat\d\docu\pur\(jt,gargs) -> JavDcl {pos=yyline d, vis=Public, name=Token.value d,
                                    jclas=jt, vars=[], defs=[],
                                    gargs,  
                                    isPure = pur, 
                                    doc=Nothing}
    
;
private reduce290 = 
        \dat\d\ds\docu\pur\(jt,gargs) -> JavDcl {pos=yyline d, vis=Public, name=Token.value d,
                                    jclas=jt, vars=ds, defs=[],
                                    gargs, 
                                    isPure = pur,
                                    doc=Nothing}
    
;
private reduce291 = 
        \dat\d\ds\docu\alts -> DatDcl {pos=yyline d, vis=Public, name=Token.value d,
                                        newt = false,
                                        vars=ds, ctrs=alts, defs=[], doc=Nothing}
    
;
private reduce292 = 
        \dat\d\docu\alts -> DatDcl {pos=yyline d, vis=Public, name=Token.value d,
                                        newt = false,
                                        vars=[], ctrs=alts, defs=[], doc=Nothing}
    
;
private reduce293 = 
        \dat\d -> DatDcl {pos=yyline d, vis=Public, name=Token.value d,
                                        newt = false,
                                        vars=[], ctrs=[], defs=[], doc=Nothing}
    
;
private reduce294 = 
        \dat\d\ds\docu\alt -> DatDcl {pos=yyline d, vis=Public, name=Token.value d,
                                        newt = true,
                                        vars=ds, ctrs=[alt], defs=[], doc=Nothing}
    
;
private reduce295 = 
        \dat\d\docu\alt -> DatDcl {pos=yyline d, vis=Public, name=Token.value d,
                                        newt = true,
                                        vars=[], ctrs=[alt], defs=[], doc=Nothing}
    
;
private reduce296 =  single 
;
private reduce297 =  (:) 
;
private reduce298 =  single 
;
private reduce299 =  liste  
;
private reduce301 =  \dc\doc -> (dc::DConS).{doc = Just (Token.value doc)} 
;
private reduce302 =  \doc\dc -> (dc::DConS).{doc = Just (Token.value doc)} 
;
private reduce304 =  \_\dc -> (dc::DConS).{vis = Public}    
;
private reduce305 =  \_\dc -> (dc::DConS).{vis = Private}   
;
private reduce306 =  \_\dc -> (dc::DConS).{vis = Protected} 
;
private reduce307 =  \_\dcon ->  DCon.{ -- strict=true,
                                                    flds <-map ConField.{strict=true}}  dcon 
;
private reduce308 =  \_\dcon ->  DCon.{ -- strict=false,
                                                    flds <-map ConField.{strict=false}} dcon 
;
private reduce310 =  \c        -> DCon {pos=yyline c, vis=Public, -- strict=false,
                                                name=Token.value c, flds=[], doc=Nothing } 
;
private reduce311 =  \c\_\fs\_ -> DCon {pos=yyline c, vis=Public, -- strict=false,
                                                name=Token.value c, flds=fs, doc=Nothing } 
;
private reduce312 =  \c\fs     -> DCon {pos=yyline c, vis=Public, -- strict=false,
                                                name=Token.value c, flds=fs, doc=Nothing } 
;
private reduce313 =  single 
;
private reduce314 =  (:)    
;
private reduce316 =  const ConField.{strict=true}  
;
private reduce317 =  const ConField.{strict=false} 
;
private reduce318 =  \tau -> case tau of 
                                    TSig s -> Field Position.null Nothing Nothing Public false s
                                    _      -> Field Position.null Nothing Nothing Public false 
                                                (ForAll [] (RhoTau [] tau))
                                
;
private reduce319 =  single 
;
private reduce320 =  (:) 
;
private reduce322 =  const 
;
private reduce323 =  \cs\(d::Token) -> map ConField.{doc <- addDoc d.value} cs 
;
private reduce324 =  \as\c\ls -> as ++ ls 
;
private reduce325 =  \as\(d::Token)\ls -> map ConField.{doc <- addDoc d.value} as ++ ls 
;
private reduce326 =  \(d::Maybe String)\vs\_\t ->
                                        map (ConField.{doc=d} . ($t)) vs
                                  
;
private reduce327 =  single 
;
private reduce328 =  liste  
;
private reduce330 =  const (ConField.{vis=Public}  .) 
;
private reduce331 =  const (ConField.{vis=Private} .) 
;
private reduce333 =  const (ConField.{strict=true}  .) 
;
private reduce334 =  const (ConField.{strict=false} .) 
;
private reduce335 =  \v -> Field (yyline v) (Just v.value) Nothing Public false 
;
private reduce336 =  \t\i   \_\r -> TypDcl {pos=yyline i, 
                                                            vis=Public, 
                                                            name=Token.value i, 
                                                            vars=[], 
                                                            typ = r, 
                                                            doc=Nothing}
;
private reduce337 =  \t\i\vs\_\r -> TypDcl {pos=yyline i, 
                                                            vis=Public, 
                                                            name=Token.value i, 
                                                            vars=vs, 
                                                            typ = r, 
                                                            doc=Nothing}
;
private reduce338 =  [] 
;
private reduce339 =  \_\_\_ -> []
;
private reduce340 =  \_\_\defs\_ -> defs
;
private reduce341 =  \_\_\_ -> []
;
private reduce342 =  \_\_\defs\_ -> defs
;
private reduce343 =  \(ex,pats)\eq\expr -> fundef ex pats expr 
;
private reduce344 =  \(ex,pats)\gds -> fungds ex pats gds 
;
private reduce345 =  \fdefs\defs ->
        case fdefs of
            [fd] | FunDcl {expr=x} <- fd = YYM.pure [fd.{expr = Let defs x}]
            _ = do
                yyerror (head fdefs).pos ("illegal function definition, where { ... } after annotation?")
                YYM.pure fdefs
    
;
private reduce346 =  \x -> do
                                            x <- funhead x
                                            YYM.pure x
                                    
;
private reduce347 =  \x ->  Lit (yyline x) LBool "true" false
;
private reduce348 =  \x ->  Lit (yyline x) LBool "false" false
;
private reduce349 =  \x ->  do litchar x 
;
private reduce350 =  \x ->  Lit (yyline x) LString (Token.value x) false
;
private reduce351 =  \x ->  do litint x  
;
private reduce352 =  \x ->  do litbig x  
;
private reduce353 =  \x ->  do litlong x 
;
private reduce354 =  \x ->  Lit (yyline x) LFloat  (Token.value x) false
;
private reduce355 =  \x ->  Lit (yyline x) LDouble (Token.value x) false
;
private reduce356 =  \x ->  do litdec x    
;
private reduce357 =  \x ->  do litregexp x 
;
private reduce362 =  \e\t\x -> do { (ex,pat) <- funhead e; YYM.pure (Right (fundef ex pat x)) }
;
private reduce363 =  \_\_\ds\_ -> Right ds 
;
private reduce364 =  single 
;
private reduce365 =  liste  
;
private reduce366 =  (const . single) 
;
private reduce367 =  single 
;
private reduce368 =  (const . single) 
;
private reduce369 =  liste 
;
private reduce370 =  \e     ->  Left (Nothing, e) 
;
private reduce371 =  \p\g\e ->  Left (Just p,  e) 
;
private reduce372 =  single 
;
private reduce373 =  liste  
;
private reduce374 =  (const . single) 
;
private reduce375 =  \a\qs\_\x  -> (yyline a, qs, x) 
;
private reduce376 =  single 
;
private reduce377 =  (:) 
;
private reduce378 =  \p\a\e ->
                                        CAlt {pat=p, ex=e}
;
private reduce379 =  \p\gs -> guardedalt p gs
;
private reduce380 = \(calt::CAltS)\defs ->
                                        let
                                            nx = Let defs calt.ex;
                                        in calt.{ ex = nx } 
;
private reduce381 =  single 
;
private reduce382 =  liste  
;
private reduce383 =  \a\_    ->  [a] 
;
private reduce384 =  \_\ps\b  -> foldr (\p\x -> Lam p x false) b ps 
;
private reduce386 =  \_\x -> x 
;
private reduce387 =  \x\_\t  -> Ann {ex = x, typ=t} 
;
private reduce389 =  flip const 
;
private reduce391 =  flip const 
;
private reduce393 =  mkapp 
;
private reduce394 =  mkapp 
;
private reduce395 =  \m\x -> nApp (Vbl (contextName m "negate")) x
;
private reduce397 =  \_\c\_\t\_\e  -> Ifte c t e
;
private reduce398 =  \_\e\_\_\as\_ -> Case CNormal e as
;
private reduce399 =  \_\_\ds\_\_\e -> Let ds e
;
private reduce401 =  underscore 
;
private reduce403 =  nApp 
;
private reduce405 =  \u\p -> nApp (Vbl {name=Simple u}) p
;
private reduce406 =  single 
;
private reduce407 =  (:) 
;
private reduce408 =  With1 
;
private reduce409 =  With2 
;
private reduce411 =  \d\_\defs\_   -> do mkMonad (yyline d) defs 
;
private reduce412 =  \p\_\(v::Token) -> umem p v id
;
private reduce413 =  \p\_\v -> do {v <- unqualified v;
                                                    YYM.pure (umem p v id)}
;
private reduce414 =  \p\_\v -> umem p v id
;
private reduce415 =  \q\_\(v::Token)\_\_ ->
                                            Vbl  (q v.{value <- ("has$" ++)}) 
;
private reduce416 =  \q\_\(v::Token)\_\_ ->
                                            Vbl  (q v.{value <- ("upd$" ++)}) 
;
private reduce417 =  \q\_\(v::Token)\_\_ ->
                                            Vbl  (q v.{value <- ("chg$" ++)}) 
;
private reduce418 =  \q\(p::Token)\fs\_ -> let {
                        -- n   = Simple q;
                        flp = Vbl (wellKnown p "flip");
                        bul = Vbl (contextName p "•");
                        c []     = undefined;
                        c (f:fs) = fold cex (chup f) fs where {
                            cex x f = bul `nApp` x `nApp` chup f;
                            chup :: (Token, Bool, Exp) -> Exp;
                            chup (r, true, e)  = flp `nApp` Vbl  (q r.{value <- ("chg$"++)}) `nApp` e;
                            chup (r, false, e) = flp `nApp` Vbl  (q r.{value <- ("upd$"++)}) `nApp` e;
                                      }} in c fs 
;
private reduce419 =  \p\_\_\(v::Token)\_\_ -> umem p v.{value <- ("has$"++)} id
;
private reduce420 =  \p\_\_\(v::Token)\_\_ -> umem p v.{value <- ("upd$"++)} id
;
private reduce421 = \p\_\_\(v::Token)\_\_ -> umem p v.{value <- ("chg$"++)} id
;
private reduce422 =  \x\(p::Token)\_\fs\_ ->
                                let {
                        u x [] = x;
                        u x ((r::Token, true , e):xs) = u (umem x r.{value <- ("chg$" ++)} (`nApp` e))  xs;
                        u x ((r::Token, false, e):xs) = u (umem x r.{value <- ("upd$" ++)} (`nApp` e))  xs;
                                } in u x fs
;
private reduce423 =  \p\t\_\v\_  ->
                                        let elem = t.{tokid = VARID, value = "elemAt"}
                                        in Vbl {name=Simple elem}
                                            `nApp` p
                                            `nApp` v
;
private reduce424 =  \x   -> Vbl {name=x} 
;
private reduce426 =  \t   -> Vbl {name = Simple t.{tokid=VARID, value="_"}} 
;
private reduce427 =  \qc  -> Con {name=qc} 
;
private reduce428 =  \qc\_\z    -> ConFS {name=qc, fields=[]}
;
private reduce429 =  \qc\_\fs\z -> ConFS {name=qc, fields=fs}
;
private reduce430 =  \z\_   -> Con (fromBase z.{tokid=CONID, value="()"})
;
private reduce431 =  \z\n\_ -> Con (fromBase z.{tokid=CONID, value=tuple (n+1)})
;
private reduce432 =  \_\x\_ -> Vbl {name=Simple x} 
;
private reduce433 =  \a\o\z -> Enclosed{firstT=a, lastT=z, ex=(varcon o) (opSname o)}
;
private reduce434 =  \_\m\_ -> (Vbl (fromBase m)) 
;
private reduce435 =  \z\o\x\_ ->  let -- (+1) --> flip (+) 1
                                        flp = Vbl (contextName z "flip") 
                                        op  = (varcon o) (opSname o)
                                        ex = nApp (nApp flp op) x
                                    in ex
;
private reduce436 =  \_\x\o\_ ->  -- (1+) --> (+) 1
                                        nApp ((varcon o) (opSname o)) x
;
private reduce437 =  \_\x\o\_ ->  -- (1+) --> (+) 1
                                        nApp ((varcon o) (Simple o)) x
;
private reduce438 =  \a\e\x\es\_ -> fold nApp (Con 
                                                                   (fromBase x.{tokid=CONID, value=tuple (1+length es)})
                                                                   )
                                                              (e:es)
;
private reduce439 =  \a\e\(x::Token)\es\_ -> do
                                            g <- getST
                                            E.warn (yyline x) (PP.text "strict tuples are deprecated, use ',' to separate elements")
                                            pure (
                                                fold nApp 
                                                    (Con 
                                                        (fromBase x.{tokid=CONID, value=tuple (1+length es)})
                                                        )
                                                    (e:es)
                                              )
                                        
;
private reduce440 =  \_\x\_ -> Term x 
;
private reduce441 =  \a\z ->  Con (fromBase z.{tokid=CONID, value="[]"})
;
private reduce442 =  \b\es\z -> 
                                                foldr (\a\as -> nApp (nApp (Con (fromBase b.{tokid=CONID, value=":"})) a) as)
                                                       (Con (fromBase z.{tokid=CONID, value="[]"}))
                                                       es
;
private reduce443 =  \a\b\c\d   -> do mkEnumFrom   a b c d
;
private reduce444 =  \a\b\c\d\e -> do mkEnumFromTo a b c d e
;
private reduce445 =  \(a::Token)\e\b\qs\(z::Token) -> do {
                let {nil = z.{tokid=CONID, value="[]"}};
                listComprehension (yyline b) e qs
                                            (Con {name = fromBase nil})
                                    }
;
private reduce446 =  const 1 
;
private reduce447 =  ((+) . const 1) 
;
private reduce448 =  single 
;
private reduce449 =  \a\c\ls ->
                                        if elemBy (using fst) a ls then do {
                                                E.warn (yyline c) (msgdoc ("field `" ++ fst a
                                                    ++ "` should appear only once."));
                                                YYM.pure ls
                                            } else
                                                YYM.pure (a:ls)
                                    
;
private reduce450 =  (const . single) 
;
private reduce451 =  single 
;
private reduce452 =  liste  
;
private reduce453 =  (const . single) 
;
private reduce454 =  \s\_\x ->  (s, true,  x) 
;
private reduce455 =  \s\_\x ->  (s, false, x) 
;
private reduce456 =  \s     ->  (s, false, Vbl (Simple s)) 
;
private reduce457 =  \s\_\x ->  (Token.value s, x) 
;
private reduce458 =  \s     ->  (s.value, Vbl (Simple s)) 
;
private reduce459 =  single 
;
private reduce460 =  liste  
;
private reduce461 =  (const . single) 
;
private reduce462 =  single 
;
private reduce463 =  liste 
;
private reduce464 =  (const . single) 
;
yyrule 1 = "module: docsO moduleclause ';' definitions";
yyrule 2 = "module: docsO moduleclause WHERE '{' definitions '}'";
yyrule 3 = "module: docsO '{' definitions '}'";
yyrule 4 = "nativename: rawnativename";
yyrule 5 = "rawnativename: VARID";
yyrule 6 = "rawnativename: CONID";
yyrule 7 = "rawnativename: PACKAGE";
yyrule 8 = "rawnativename: VARID '.' rawnativename";
yyrule 9 = "rawnativename: PACKAGE '.' rawnativename";
yyrule 10 = "rawnativename: QUALIFIER rawnativename";
yyrule 11 = "rawnativename: STRCONST";
yyrule 12 = "modulename1: CONID";
yyrule 13 = "modulename1: varidkw '.' modulename1";
yyrule 14 = "modulename1: QUALIFIER modulename1";
yyrule 15 = "modulename: modulename1";
yyrule 16 = "docs: DOCUMENTATION";
yyrule 17 = "docs: DOCUMENTATION docs";
yyrule 18 = "docsO: <empty>";
yyrule 19 = "docsO: docs";
yyrule 20 = "moduleclause: PACKAGE modulename";
yyrule 21 = "moduleclause: PROTECTED PACKAGE modulename";
yyrule 22 = "moduleclause: moduleclause words '(' qvarids ')'";
yyrule 23 = "word: VARID";
yyrule 24 = "words: word";
yyrule 25 = "words: word words";
yyrule 26 = "definitions: definition";
yyrule 27 = "definitions: definition ';'";
yyrule 28 = "definitions: definition ';' definitions";
yyrule 29 = "definition: documentation";
yyrule 30 = "definition: topdefinition";
yyrule 31 = "definition: visibledefinition";
yyrule 32 = "visibledefinition: PRIVATE publicdefinition";
yyrule 33 = "visibledefinition: PROTECTED publicdefinition";
yyrule 34 = "visibledefinition: PUBLIC publicdefinition";
yyrule 35 = "visibledefinition: ABSTRACT datadef";
yyrule 36 = "topdefinition: import";
yyrule 37 = "topdefinition: infix";
yyrule 38 = "topdefinition: moduledefinition";
yyrule 39 = "topdefinition: publicdefinition";
yyrule 40 = "moduledefinition: NATIVE PACKAGE typeclause interfaces wheretokens";
yyrule 41 = "typeclause: <empty>";
yyrule 42 = "typeclause: TYPE tau";
yyrule 43 = "interfaces: <empty>";
yyrule 44 = "interfaces: CLASS tauSC";
yyrule 45 = "wheretokens: WHERE '{' jtokens '}'";
yyrule 46 = "wheretokens: WHERE '{' '}'";
yyrule 47 = "jtoken: VARID";
yyrule 48 = "jtoken: CONID";
yyrule 49 = "jtoken: QUALIFIER";
yyrule 50 = "jtoken: EXTENDS";
yyrule 51 = "jtoken: SUPER";
yyrule 52 = "jtoken: DOCUMENTATION";
yyrule 53 = "jtoken: PACKAGE";
yyrule 54 = "jtoken: IMPORT";
yyrule 55 = "jtoken: INFIX";
yyrule 56 = "jtoken: INFIXR";
yyrule 57 = "jtoken: INFIXL";
yyrule 58 = "jtoken: NATIVE";
yyrule 59 = "jtoken: DATA";
yyrule 60 = "jtoken: WHERE";
yyrule 61 = "jtoken: CLASS";
yyrule 62 = "jtoken: INSTANCE";
yyrule 63 = "jtoken: ABSTRACT";
yyrule 64 = "jtoken: TYPE";
yyrule 65 = "jtoken: TRUE";
yyrule 66 = "jtoken: FALSE";
yyrule 67 = "jtoken: IF";
yyrule 68 = "jtoken: THEN";
yyrule 69 = "jtoken: ELSE";
yyrule 70 = "jtoken: CASE";
yyrule 71 = "jtoken: OF";
yyrule 72 = "jtoken: DERIVE";
yyrule 73 = "jtoken: LET";
yyrule 74 = "jtoken: IN";
yyrule 75 = "jtoken: DO";
yyrule 76 = "jtoken: FORALL";
yyrule 77 = "jtoken: PRIVATE";
yyrule 78 = "jtoken: PROTECTED";
yyrule 79 = "jtoken: PUBLIC";
yyrule 80 = "jtoken: PURE";
yyrule 81 = "jtoken: THROWS";
yyrule 82 = "jtoken: MUTABLE";
yyrule 83 = "jtoken: INTCONST";
yyrule 84 = "jtoken: STRCONST";
yyrule 85 = "jtoken: LONGCONST";
yyrule 86 = "jtoken: FLTCONST";
yyrule 87 = "jtoken: DBLCONST";
yyrule 88 = "jtoken: CHRCONST";
yyrule 89 = "jtoken: ARROW";
yyrule 90 = "jtoken: DCOLON";
yyrule 91 = "jtoken: GETS";
yyrule 92 = "jtoken: EARROW";
yyrule 93 = "jtoken: DOTDOT";
yyrule 94 = "jtoken: SOMEOP";
yyrule 95 = "jtoken: ','";
yyrule 96 = "jtoken: '|'";
yyrule 97 = "jtoken: '['";
yyrule 98 = "jtoken: ']'";
yyrule 99 = "jtoken: '('";
yyrule 100 = "jtoken: ')'";
yyrule 101 = "jtoken: '.'";
yyrule 102 = "jtoken: '?'";
yyrule 103 = "jtoken: '-'";
yyrule 104 = "jtoken: ';'";
yyrule 105 = "jtoken: '!'";
yyrule 106 = "jtoken: '='";
yyrule 107 = "jtoken: '\\'";
yyrule 108 = "jtokens: jtoken";
yyrule 109 = "jtokens: jtoken jtokens";
yyrule 110 = "jtokens: '{' jtokens '}'";
yyrule 111 = "jtokens: '{' jtokens '}' jtokens";
yyrule 112 = "jtokens: '{' '}'";
yyrule 113 = "jtokens: '{' '}' jtokens";
yyrule 114 = "documentation: DOCUMENTATION";
yyrule 115 = "publicdefinition: typedef";
yyrule 116 = "publicdefinition: datadef";
yyrule 117 = "publicdefinition: classdef";
yyrule 118 = "publicdefinition: instdef";
yyrule 119 = "publicdefinition: derivedef";
yyrule 120 = "publicdefinition: localdef";
yyrule 121 = "localdefs: dplocaldef";
yyrule 122 = "localdefs: dplocaldef ';'";
yyrule 123 = "localdefs: dplocaldef ';' localdefs";
yyrule 124 = "localdef: annotation";
yyrule 125 = "localdef: nativedef";
yyrule 126 = "localdef: fundef";
yyrule 127 = "plocaldef: localdef";
yyrule 128 = "plocaldef: PRIVATE localdef";
yyrule 129 = "plocaldef: PROTECTED localdef";
yyrule 130 = "plocaldef: PUBLIC localdef";
yyrule 131 = "dplocaldef: documentation";
yyrule 132 = "dplocaldef: documentation dplocaldef";
yyrule 133 = "dplocaldef: plocaldef";
yyrule 134 = "letdef: annotation";
yyrule 135 = "letdef: fundef";
yyrule 136 = "letdefs: letdef";
yyrule 137 = "letdefs: letdef ';'";
yyrule 138 = "letdefs: letdef ';' letdefs";
yyrule 139 = "import: IMPORT modulename importliste";
yyrule 140 = "import: IMPORT modulename VARID CONID importliste";
yyrule 141 = "import: IMPORT modulename CONID importliste";
yyrule 142 = "importliste: <empty>";
yyrule 143 = "importliste: varid '(' importspecs ')'";
yyrule 144 = "importliste: '(' ')'";
yyrule 145 = "importliste: '(' importspecs ')'";
yyrule 146 = "importliste: PUBLIC importliste";
yyrule 147 = "importspecs: importspec";
yyrule 148 = "importspecs: importspec ','";
yyrule 149 = "importspecs: importspec ',' importspecs";
yyrule 150 = "importitem: qvarid";
yyrule 151 = "importitem: CONID '(' memspecs ')'";
yyrule 152 = "importitem: CONID '(' ')'";
yyrule 153 = "importitem: qconid";
yyrule 154 = "importitem: operator";
yyrule 155 = "importitem: unop";
yyrule 156 = "importspec: importitem";
yyrule 157 = "importspec: importitem alias";
yyrule 158 = "importspec: PUBLIC importspec";
yyrule 159 = "memspec: alias";
yyrule 160 = "memspec: alias alias";
yyrule 161 = "memspec: PUBLIC memspec";
yyrule 162 = "memspecs: memspec";
yyrule 163 = "memspecs: memspec ','";
yyrule 164 = "memspecs: memspec ',' memspecs";
yyrule 165 = "alias: VARID";
yyrule 166 = "alias: CONID";
yyrule 167 = "alias: operator";
yyrule 168 = "varid: VARID";
yyrule 169 = "varidkw: VARID";
yyrule 170 = "varidkw: DATA";
yyrule 171 = "varidkw: TYPE";
yyrule 172 = "varidkw: NATIVE";
yyrule 173 = "varidkw: PURE";
yyrule 174 = "varidkw: PACKAGE";
yyrule 175 = "varidkw: IMPORT";
yyrule 176 = "qvarids: qvarop";
yyrule 177 = "qvarids: qvarop ',' qvarids";
yyrule 178 = "qvarid: QUALIFIER QUALIFIER varop";
yyrule 179 = "qvarid: QUALIFIER varop";
yyrule 180 = "qvarid: VARID";
yyrule 181 = "qconid: QUALIFIER QUALIFIER CONID";
yyrule 182 = "qconid: QUALIFIER CONID";
yyrule 183 = "qconid: CONID";
yyrule 184 = "varop: VARID";
yyrule 185 = "varop: unop";
yyrule 186 = "qvarop: QUALIFIER QUALIFIER varop";
yyrule 187 = "qvarop: QUALIFIER varop";
yyrule 188 = "qvarop: varop";
yyrule 189 = "qvarop: operator";
yyrule 190 = "operator: SOMEOP";
yyrule 191 = "unop: '!'";
yyrule 192 = "unop: '?'";
yyrule 193 = "fixity: INFIX INTCONST";
yyrule 194 = "fixity: INFIXL INTCONST";
yyrule 195 = "fixity: INFIXR INTCONST";
yyrule 196 = "opstring: operator";
yyrule 197 = "opstring: VARID";
yyrule 198 = "opstring: '-'";
yyrule 199 = "operators: opstring";
yyrule 200 = "operators: opstring operators";
yyrule 201 = "infix: fixity operators";
yyrule 202 = "annotation: annoitems DCOLON sigma";
yyrule 203 = "annoitem: varid";
yyrule 204 = "annoitem: '(' operator ')'";
yyrule 205 = "annoitem: '(' unop ')'";
yyrule 206 = "annoitem: '(' '-' ')'";
yyrule 207 = "annoitems: annoitem";
yyrule 208 = "annoitems: annoitem ',' annoitems";
yyrule 209 = "nativedef: PURE impurenativedef";
yyrule 210 = "nativedef: impurenativedef";
yyrule 211 = "fitem: annoitem";
yyrule 212 = "fitem: unop";
yyrule 213 = "fitem: '-'";
yyrule 214 = "fitem: operator";
yyrule 215 = "jitem: nativename";
yyrule 216 = "jitem: operator";
yyrule 217 = "jitem: unop";
yyrule 218 = "methodspec: fitem jitem gargs";
yyrule 219 = "methodspec: fitem jitem";
yyrule 220 = "methodspec: fitem gargs";
yyrule 221 = "methodspec: fitem";
yyrule 222 = "sigex: sigma THROWS tauSC";
yyrule 223 = "sigex: sigma";
yyrule 224 = "sigexs: sigex";
yyrule 225 = "sigexs: sigex '|' sigexs";
yyrule 226 = "impurenativedef: NATIVE methodspec DCOLON sigexs";
yyrule 227 = "sigma: forall";
yyrule 228 = "sigma: rho";
yyrule 229 = "forall: FORALL dvars mbdot rho";
yyrule 230 = "mbdot: '.'";
yyrule 231 = "mbdot: SOMEOP";
yyrule 232 = "rho: tapp EARROW rhofun";
yyrule 233 = "rho: rhofun";
yyrule 234 = "rhofun: tapp";
yyrule 235 = "rhofun: tapp ARROW rhofun";
yyrule 236 = "tau: tapp";
yyrule 237 = "tau: forall";
yyrule 238 = "tau: tapp ARROW tau";
yyrule 239 = "tauSC: tau";
yyrule 240 = "tauSC: tau ',' tauSC";
yyrule 241 = "tauSB: tau";
yyrule 242 = "tauSB: tau '|' tauSB";
yyrule 243 = "tapp: simpletypes";
yyrule 244 = "simpletype: tyvar";
yyrule 245 = "simpletype: tyname";
yyrule 246 = "simpletype: '(' tau ')'";
yyrule 247 = "simpletype: '(' tau ',' tauSC ')'";
yyrule 248 = "simpletype: '(' tau '|' tauSB ')'";
yyrule 249 = "simpletype: '[' tau ']'";
yyrule 250 = "tyvar: VARID";
yyrule 251 = "tyvar: '(' VARID DCOLON kind ')'";
yyrule 252 = "tyvar: '(' VARID EXTENDS tauSC ')'";
yyrule 253 = "tyvar: '(' EXTENDS tauSC ')'";
yyrule 254 = "tyvar: '(' SUPER tapp ')'";
yyrule 255 = "tyname: qconid";
yyrule 256 = "tyname: '[' ']'";
yyrule 257 = "tyname: '(' ')'";
yyrule 258 = "tyname: '(' commata ')'";
yyrule 259 = "tyname: '(' ARROW ')'";
yyrule 260 = "kind: simplekind ARROW kind";
yyrule 261 = "kind: simplekind";
yyrule 262 = "simplekind: SOMEOP";
yyrule 263 = "simplekind: '(' kind ')'";
yyrule 264 = "scontext: qconid tyvar";
yyrule 265 = "scontexts: scontext";
yyrule 266 = "scontexts: scontext ','";
yyrule 267 = "scontexts: scontext ',' scontexts";
yyrule 268 = "ccontext: scontext";
yyrule 269 = "ccontext: '(' scontexts ')'";
yyrule 270 = "classdef: CLASS ccontext EARROW CONID tyvar wheredef";
yyrule 271 = "classdef: CLASS ccontext wheredef";
yyrule 272 = "sicontext: qconid simpletype";
yyrule 273 = "sicontexts: sicontext";
yyrule 274 = "sicontexts: sicontext ','";
yyrule 275 = "sicontexts: sicontext ',' sicontexts";
yyrule 276 = "icontext: sicontext";
yyrule 277 = "icontext: '(' sicontexts ')'";
yyrule 278 = "insthead: icontext EARROW tyname simpletype";
yyrule 279 = "insthead: icontext";
yyrule 280 = "instdef: INSTANCE insthead wheredef";
yyrule 281 = "derivedef: DERIVE insthead";
yyrule 282 = "datadef: datainit wheredef";
yyrule 283 = "nativepur: PURE NATIVE";
yyrule 284 = "nativepur: NATIVE";
yyrule 285 = "nativespec: nativename";
yyrule 286 = "nativespec: nativename gargs";
yyrule 287 = "gargs: '{' tauSC '}'";
yyrule 288 = "gargs: '{' '}'";
yyrule 289 = "datainit: DATA CONID '=' nativepur nativespec";
yyrule 290 = "datainit: DATA CONID dvars '=' nativepur nativespec";
yyrule 291 = "datainit: DATA CONID dvars '=' dalts";
yyrule 292 = "datainit: DATA CONID '=' dalts";
yyrule 293 = "datainit: DATA CONID";
yyrule 294 = "datainit: NEWTYPE CONID dvars '=' dalt";
yyrule 295 = "datainit: NEWTYPE CONID '=' dalt";
yyrule 296 = "dvars: tyvar";
yyrule 297 = "dvars: tyvar dvars";
yyrule 298 = "dalts: dalt";
yyrule 299 = "dalts: dalt '|' dalts";
yyrule 300 = "dalt: visdalt";
yyrule 301 = "dalt: visdalt DOCUMENTATION";
yyrule 302 = "dalt: DOCUMENTATION visdalt";
yyrule 303 = "visdalt: strictdalt";
yyrule 304 = "visdalt: PUBLIC strictdalt";
yyrule 305 = "visdalt: PRIVATE strictdalt";
yyrule 306 = "visdalt: PROTECTED strictdalt";
yyrule 307 = "strictdalt: '!' simpledalt";
yyrule 308 = "strictdalt: '?' simpledalt";
yyrule 309 = "strictdalt: simpledalt";
yyrule 310 = "simpledalt: CONID";
yyrule 311 = "simpledalt: CONID '{' conflds '}'";
yyrule 312 = "simpledalt: CONID contypes";
yyrule 313 = "contypes: strictcontype";
yyrule 314 = "contypes: strictcontype contypes";
yyrule 315 = "strictcontype: contype";
yyrule 316 = "strictcontype: '!' contype";
yyrule 317 = "strictcontype: '?' contype";
yyrule 318 = "contype: simpletype";
yyrule 319 = "simpletypes: simpletype";
yyrule 320 = "simpletypes: simpletype simpletypes";
yyrule 321 = "conflds: confld";
yyrule 322 = "conflds: confld ','";
yyrule 323 = "conflds: confld DOCUMENTATION";
yyrule 324 = "conflds: confld ',' conflds";
yyrule 325 = "conflds: confld DOCUMENTATION conflds";
yyrule 326 = "confld: docsO fldids DCOLON sigma";
yyrule 327 = "fldids: fldid";
yyrule 328 = "fldids: fldid ',' fldids";
yyrule 329 = "fldid: strictfldid";
yyrule 330 = "fldid: PUBLIC strictfldid";
yyrule 331 = "fldid: PRIVATE strictfldid";
yyrule 332 = "strictfldid: plainfldid";
yyrule 333 = "strictfldid: '!' plainfldid";
yyrule 334 = "strictfldid: '?' plainfldid";
yyrule 335 = "plainfldid: varid";
yyrule 336 = "typedef: TYPE CONID '=' sigma";
yyrule 337 = "typedef: TYPE CONID dvars '=' sigma";
yyrule 338 = "wheredef: <empty>";
yyrule 339 = "wheredef: WHERE '{' '}'";
yyrule 340 = "wheredef: WHERE '{' localdefs '}'";
yyrule 341 = "wherelet: WHERE '{' '}'";
yyrule 342 = "wherelet: WHERE '{' letdefs '}'";
yyrule 343 = "fundef: funhead '=' expr";
yyrule 344 = "fundef: funhead guards";
yyrule 345 = "fundef: fundef wherelet";
yyrule 346 = "funhead: binex";
yyrule 347 = "literal: TRUE";
yyrule 348 = "literal: FALSE";
yyrule 349 = "literal: CHRCONST";
yyrule 350 = "literal: STRCONST";
yyrule 351 = "literal: INTCONST";
yyrule 352 = "literal: BIGCONST";
yyrule 353 = "literal: LONGCONST";
yyrule 354 = "literal: FLTCONST";
yyrule 355 = "literal: DBLCONST";
yyrule 356 = "literal: DECCONST";
yyrule 357 = "literal: REGEXP";
yyrule 358 = "pattern: expr";
yyrule 359 = "aeq: ARROW";
yyrule 360 = "aeq: '='";
yyrule 361 = "lcqual: gqual";
yyrule 362 = "lcqual: expr '=' expr";
yyrule 363 = "lcqual: LET '{' letdefs '}'";
yyrule 364 = "lcquals: lcqual";
yyrule 365 = "lcquals: lcqual ',' lcquals";
yyrule 366 = "lcquals: lcqual ','";
yyrule 367 = "dodefs: lcqual";
yyrule 368 = "dodefs: lcqual ';'";
yyrule 369 = "dodefs: lcqual ';' dodefs";
yyrule 370 = "gqual: expr";
yyrule 371 = "gqual: expr GETS expr";
yyrule 372 = "gquals: gqual";
yyrule 373 = "gquals: gqual ',' gquals";
yyrule 374 = "gquals: gqual ','";
yyrule 375 = "guard: '|' gquals aeq expr";
yyrule 376 = "guards: guard";
yyrule 377 = "guards: guard guards";
yyrule 378 = "calt: pattern aeq expr";
yyrule 379 = "calt: pattern guards";
yyrule 380 = "calt: calt wherelet";
yyrule 381 = "calts: calt";
yyrule 382 = "calts: calt ';' calts";
yyrule 383 = "calts: calt ';'";
yyrule 384 = "lambda: '\\' apats lambdabody";
yyrule 385 = "lambdabody: lambda";
yyrule 386 = "lambdabody: ARROW expr";
yyrule 387 = "expr: binex DCOLON sigma";
yyrule 388 = "expr: binex";
yyrule 389 = "thenx: ';' THEN";
yyrule 390 = "thenx: THEN";
yyrule 391 = "elsex: ';' ELSE";
yyrule 392 = "elsex: ELSE";
yyrule 393 = "binex: binex SOMEOP binex";
yyrule 394 = "binex: binex '-' binex";
yyrule 395 = "binex: '-' topex";
yyrule 396 = "binex: topex";
yyrule 397 = "topex: IF expr thenx expr elsex expr";
yyrule 398 = "topex: CASE expr OF '{' calts '}'";
yyrule 399 = "topex: LET '{' letdefs '}' IN expr";
yyrule 400 = "topex: lambda";
yyrule 401 = "topex: appex";
yyrule 402 = "appex: unex";
yyrule 403 = "appex: appex unex";
yyrule 404 = "unex: primary";
yyrule 405 = "unex: unop unex";
yyrule 406 = "apats: unex";
yyrule 407 = "apats: unex apats";
yyrule 408 = "qualifiers: QUALIFIER";
yyrule 409 = "qualifiers: QUALIFIER QUALIFIER";
yyrule 410 = "primary: term";
yyrule 411 = "primary: DO '{' dodefs '}'";
yyrule 412 = "primary: primary '.' VARID";
yyrule 413 = "primary: primary '.' operator";
yyrule 414 = "primary: primary '.' unop";
yyrule 415 = "primary: qualifiers '{' VARID '?' '}'";
yyrule 416 = "primary: qualifiers '{' VARID '=' '}'";
yyrule 417 = "primary: qualifiers '{' VARID GETS '}'";
yyrule 418 = "primary: qualifiers '{' getfields '}'";
yyrule 419 = "primary: primary '.' '{' VARID '?' '}'";
yyrule 420 = "primary: primary '.' '{' VARID '=' '}'";
yyrule 421 = "primary: primary '.' '{' VARID GETS '}'";
yyrule 422 = "primary: primary '.' '{' getfields '}'";
yyrule 423 = "primary: primary '.' '[' expr ']'";
yyrule 424 = "term: qvarid";
yyrule 425 = "term: literal";
yyrule 426 = "term: '_'";
yyrule 427 = "term: qconid";
yyrule 428 = "term: qconid '{' '}'";
yyrule 429 = "term: qconid '{' fields '}'";
yyrule 430 = "term: '(' ')'";
yyrule 431 = "term: '(' commata ')'";
yyrule 432 = "term: '(' unop ')'";
yyrule 433 = "term: '(' operator ')'";
yyrule 434 = "term: '(' '-' ')'";
yyrule 435 = "term: '(' operator expr ')'";
yyrule 436 = "term: '(' binex operator ')'";
yyrule 437 = "term: '(' binex '-' ')'";
yyrule 438 = "term: '(' expr ',' exprSC ')'";
yyrule 439 = "term: '(' expr ';' exprSS ')'";
yyrule 440 = "term: '(' expr ')'";
yyrule 441 = "term: '[' ']'";
yyrule 442 = "term: '[' exprSC ']'";
yyrule 443 = "term: '[' exprSC DOTDOT ']'";
yyrule 444 = "term: '[' exprSC DOTDOT expr ']'";
yyrule 445 = "term: '[' expr '|' lcquals ']'";
yyrule 446 = "commata: ','";
yyrule 447 = "commata: ',' commata";
yyrule 448 = "fields: field";
yyrule 449 = "fields: field ',' fields";
yyrule 450 = "fields: field ','";
yyrule 451 = "getfields: getfield";
yyrule 452 = "getfields: getfield ',' getfields";
yyrule 453 = "getfields: getfield ','";
yyrule 454 = "getfield: VARID GETS expr";
yyrule 455 = "getfield: VARID '=' expr";
yyrule 456 = "getfield: VARID";
yyrule 457 = "field: varid '=' expr";
yyrule 458 = "field: varid";
yyrule 459 = "exprSC: expr";
yyrule 460 = "exprSC: expr ',' exprSC";
yyrule 461 = "exprSC: expr ','";
yyrule 462 = "exprSS: expr";
yyrule 463 = "exprSS: expr ';' exprSS";
yyrule 464 = "exprSS: expr ';'";
yyrule _ = "<unknown rule>";

private yyprod1 ((_, (YYNTdefinitions yy4)):(_, (YYTok yy3)):(_, (YYNTmoduleclause yy2)):(_, (YYNTdocsO yy1)):yyvs) =  do { yyr <- reduce1 yy1 yy2 yy3 yy4 ;YYM.pure (YYNTmodule yyr, yyvs)};
private yyprod1 yyvals = yybadprod 1 yyvals;
private yyprod2 ((_, (YYTok yy6)):(_, (YYNTdefinitions yy5)):(_, (YYTok yy4)):(_, (YYTok yy3)):(_, (YYNTmoduleclause yy2)):(_, (YYNTdocsO yy1)):yyvs) =  do { yyr <- reduce2 yy1 yy2 yy3 yy4 yy5 yy6 ;YYM.pure (YYNTmodule yyr, yyvs)};
private yyprod2 yyvals = yybadprod 2 yyvals;
private yyprod3 ((_, (YYTok yy4)):(_, (YYNTdefinitions yy3)):(_, (YYTok yy2)):(_, (YYNTdocsO yy1)):yyvs) =  do { yyr <- reduce3 yy1 yy2 yy3 yy4 ;YYM.pure (YYNTmodule yyr, yyvs)};
private yyprod3 yyvals = yybadprod 3 yyvals;
private yyprod4 ((_, (YYNTrawnativename yy1)):yyvs) =  do { yyr <- reduce4 yy1 ;YYM.pure (YYNTnativename yyr, yyvs)};
private yyprod4 yyvals = yybadprod 4 yyvals;
private yyprod5 ((_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce5 yy1}; YYM.pure (YYNTrawnativename yyr, yyvs)};
private yyprod5 yyvals = yybadprod 5 yyvals;
private yyprod6 ((_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce6 yy1}; YYM.pure (YYNTrawnativename yyr, yyvs)};
private yyprod6 yyvals = yybadprod 6 yyvals;
private yyprod7 ((_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce7 yy1}; YYM.pure (YYNTrawnativename yyr, yyvs)};
private yyprod7 yyvals = yybadprod 7 yyvals;
private yyprod8 ((_, (YYNTrawnativename yy3)):(_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce8 yy1 yy2 yy3}; YYM.pure (YYNTrawnativename yyr, yyvs)};
private yyprod8 yyvals = yybadprod 8 yyvals;
private yyprod9 ((_, (YYNTrawnativename yy3)):(_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce9 yy1 yy2 yy3}; YYM.pure (YYNTrawnativename yyr, yyvs)};
private yyprod9 yyvals = yybadprod 9 yyvals;
private yyprod10 ((_, (YYNTrawnativename yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce10 yy1 yy2}; YYM.pure (YYNTrawnativename yyr, yyvs)};
private yyprod10 yyvals = yybadprod 10 yyvals;
private yyprod11 ((_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce11 yy1}; YYM.pure (YYNTrawnativename yyr, yyvs)};
private yyprod11 yyvals = yybadprod 11 yyvals;
private yyprod12 ((_, (YYTok yy1)):yyvs) =  do { yyr <- reduce12 yy1 ;YYM.pure (YYNTmodulename1 yyr, yyvs)};
private yyprod12 yyvals = yybadprod 12 yyvals;
private yyprod13 ((_, (YYNTmodulename1 yy3)):(_, (YYTok yy2)):(_, (YYNTvaridkw yy1)):yyvs) =  do { let {!yyr = reduce13 yy1 yy2 yy3}; YYM.pure (YYNTmodulename1 yyr, yyvs)};
private yyprod13 yyvals = yybadprod 13 yyvals;
private yyprod14 ((_, (YYNTmodulename1 yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce14 yy1 yy2}; YYM.pure (YYNTmodulename1 yyr, yyvs)};
private yyprod14 yyvals = yybadprod 14 yyvals;
private yyprod15 ((_, (YYNTmodulename1 yy1)):yyvs) =  do { let {!yyr = reduce15 yy1}; YYM.pure (YYNTmodulename yyr, yyvs)};
private yyprod15 yyvals = yybadprod 15 yyvals;
private yyprod16 ((_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce16 yy1}; YYM.pure (YYNTdocs yyr, yyvs)};
private yyprod16 yyvals = yybadprod 16 yyvals;
private yyprod17 ((_, (YYNTdocs yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce17 yy1 yy2}; YYM.pure (YYNTdocs yyr, yyvs)};
private yyprod17 yyvals = yybadprod 17 yyvals;
private yyprod18 yyvs =  do { let {!yyr = reduce18 }; YYM.pure (YYNTdocsO yyr, yyvs)};
private yyprod19 ((_, (YYNTdocs yy1)):yyvs) =  do { let {!yyr = reduce19 yy1}; YYM.pure (YYNTdocsO yyr, yyvs)};
private yyprod19 yyvals = yybadprod 19 yyvals;
private yyprod20 ((_, (YYNTmodulename yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce20 yy1 yy2}; YYM.pure (YYNTmoduleclause yyr, yyvs)};
private yyprod20 yyvals = yybadprod 20 yyvals;
private yyprod21 ((_, (YYNTmodulename yy3)):(_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { yyr <- reduce21 yy1 yy2 yy3 ;YYM.pure (YYNTmoduleclause yyr, yyvs)};
private yyprod21 yyvals = yybadprod 21 yyvals;
private yyprod22 ((_, (YYTok yy5)):(_, (YYNTqvarids yy4)):(_, (YYTok yy3)):(_, (YYNTwords yy2)):(_, (YYNTmoduleclause yy1)):yyvs) =  do { yyr <- reduce22 yy1 yy2 yy3 yy4 yy5 ;YYM.pure (YYNTmoduleclause yyr, yyvs)};
private yyprod22 yyvals = yybadprod 22 yyvals;
private yyprod23 ((_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce23 yy1}; YYM.pure (YYNTword yyr, yyvs)};
private yyprod23 yyvals = yybadprod 23 yyvals;
private yyprod24 ((_, (YYNTword yy1)):yyvs) =  do { let {!yyr = reduce24 yy1}; YYM.pure (YYNTwords yyr, yyvs)};
private yyprod24 yyvals = yybadprod 24 yyvals;
private yyprod25 ((_, (YYNTwords yy2)):(_, (YYNTword yy1)):yyvs) =  do { let {!yyr = reduce25 yy1 yy2}; YYM.pure (YYNTwords yyr, yyvs)};
private yyprod25 yyvals = yybadprod 25 yyvals;
private yyprod26 ((_, (YYNTdefinition yy1)):yyvs) = YYM.pure (YYNTdefinitions (yy1), yyvs);
private yyprod26 yyvals = yybadprod 26 yyvals;
private yyprod27 ((_, (YYTok yy2)):(_, (YYNTdefinition yy1)):yyvs) =  do { let {!yyr = reduce27 yy1 yy2}; YYM.pure (YYNTdefinitions yyr, yyvs)};
private yyprod27 yyvals = yybadprod 27 yyvals;
private yyprod28 ((_, (YYNTdefinitions yy3)):(_, (YYTok yy2)):(_, (YYNTdefinition yy1)):yyvs) =  do { let {!yyr = reduce28 yy1 yy2 yy3}; YYM.pure (YYNTdefinitions yyr, yyvs)};
private yyprod28 yyvals = yybadprod 28 yyvals;
private yyprod29 ((_, (YYNTdocumentation yy1)):yyvs) =  do { let {!yyr = reduce29 yy1}; YYM.pure (YYNTdefinition yyr, yyvs)};
private yyprod29 yyvals = yybadprod 29 yyvals;
private yyprod30 ((_, (YYNTtopdefinition yy1)):yyvs) = YYM.pure (YYNTdefinition (yy1), yyvs);
private yyprod30 yyvals = yybadprod 30 yyvals;
private yyprod31 ((_, (YYNTvisibledefinition yy1)):yyvs) = YYM.pure (YYNTdefinition (yy1), yyvs);
private yyprod31 yyvals = yybadprod 31 yyvals;
private yyprod32 ((_, (YYNTpublicdefinition yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce32 yy1 yy2}; YYM.pure (YYNTvisibledefinition yyr, yyvs)};
private yyprod32 yyvals = yybadprod 32 yyvals;
private yyprod33 ((_, (YYNTpublicdefinition yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce33 yy1 yy2}; YYM.pure (YYNTvisibledefinition yyr, yyvs)};
private yyprod33 yyvals = yybadprod 33 yyvals;
private yyprod34 ((_, (YYNTpublicdefinition yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce34 yy1 yy2}; YYM.pure (YYNTvisibledefinition yyr, yyvs)};
private yyprod34 yyvals = yybadprod 34 yyvals;
private yyprod35 ((_, (YYNTdatadef yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce35 yy1 yy2}; YYM.pure (YYNTvisibledefinition yyr, yyvs)};
private yyprod35 yyvals = yybadprod 35 yyvals;
private yyprod36 ((_, (YYNTimport yy1)):yyvs) =  do { let {!yyr = reduce36 yy1}; YYM.pure (YYNTtopdefinition yyr, yyvs)};
private yyprod36 yyvals = yybadprod 36 yyvals;
private yyprod37 ((_, (YYNTinfix yy1)):yyvs) =  do { let {!yyr = reduce37 yy1}; YYM.pure (YYNTtopdefinition yyr, yyvs)};
private yyprod37 yyvals = yybadprod 37 yyvals;
private yyprod38 ((_, (YYNTmoduledefinition yy1)):yyvs) =  do { let {!yyr = reduce38 yy1}; YYM.pure (YYNTtopdefinition yyr, yyvs)};
private yyprod38 yyvals = yybadprod 38 yyvals;
private yyprod39 ((_, (YYNTpublicdefinition yy1)):yyvs) = YYM.pure (YYNTtopdefinition (yy1), yyvs);
private yyprod39 yyvals = yybadprod 39 yyvals;
private yyprod40 ((_, (YYNTwheretokens yy5)):(_, (YYNTinterfaces yy4)):(_, (YYNTtypeclause yy3)):(_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce40 yy1 yy2 yy3 yy4 yy5}; YYM.pure (YYNTmoduledefinition yyr, yyvs)};
private yyprod40 yyvals = yybadprod 40 yyvals;
private yyprod41 yyvs =  do { let {!yyr = reduce41 }; YYM.pure (YYNTtypeclause yyr, yyvs)};
private yyprod42 ((_, (YYNTtau yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce42 yy1 yy2}; YYM.pure (YYNTtypeclause yyr, yyvs)};
private yyprod42 yyvals = yybadprod 42 yyvals;
private yyprod43 yyvs =  do { let {!yyr = reduce43 }; YYM.pure (YYNTinterfaces yyr, yyvs)};
private yyprod44 ((_, (YYNTtauSC yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce44 yy1 yy2}; YYM.pure (YYNTinterfaces yyr, yyvs)};
private yyprod44 yyvals = yybadprod 44 yyvals;
private yyprod45 ((_, (YYTok yy4)):(_, (YYNTjtokens yy3)):(_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce45 yy1 yy2 yy3 yy4}; YYM.pure (YYNTwheretokens yyr, yyvs)};
private yyprod45 yyvals = yybadprod 45 yyvals;
private yyprod46 ((_, (YYTok yy3)):(_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce46 yy1 yy2 yy3}; YYM.pure (YYNTwheretokens yyr, yyvs)};
private yyprod46 yyvals = yybadprod 46 yyvals;
private yyprod47 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod47 yyvals = yybadprod 47 yyvals;
private yyprod48 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod48 yyvals = yybadprod 48 yyvals;
private yyprod49 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod49 yyvals = yybadprod 49 yyvals;
private yyprod50 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod50 yyvals = yybadprod 50 yyvals;
private yyprod51 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod51 yyvals = yybadprod 51 yyvals;
private yyprod52 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod52 yyvals = yybadprod 52 yyvals;
private yyprod53 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod53 yyvals = yybadprod 53 yyvals;
private yyprod54 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod54 yyvals = yybadprod 54 yyvals;
private yyprod55 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod55 yyvals = yybadprod 55 yyvals;
private yyprod56 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod56 yyvals = yybadprod 56 yyvals;
private yyprod57 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod57 yyvals = yybadprod 57 yyvals;
private yyprod58 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod58 yyvals = yybadprod 58 yyvals;
private yyprod59 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod59 yyvals = yybadprod 59 yyvals;
private yyprod60 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod60 yyvals = yybadprod 60 yyvals;
private yyprod61 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod61 yyvals = yybadprod 61 yyvals;
private yyprod62 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod62 yyvals = yybadprod 62 yyvals;
private yyprod63 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod63 yyvals = yybadprod 63 yyvals;
private yyprod64 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod64 yyvals = yybadprod 64 yyvals;
private yyprod65 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod65 yyvals = yybadprod 65 yyvals;
private yyprod66 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod66 yyvals = yybadprod 66 yyvals;
private yyprod67 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod67 yyvals = yybadprod 67 yyvals;
private yyprod68 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod68 yyvals = yybadprod 68 yyvals;
private yyprod69 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod69 yyvals = yybadprod 69 yyvals;
private yyprod70 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod70 yyvals = yybadprod 70 yyvals;
private yyprod71 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod71 yyvals = yybadprod 71 yyvals;
private yyprod72 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod72 yyvals = yybadprod 72 yyvals;
private yyprod73 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod73 yyvals = yybadprod 73 yyvals;
private yyprod74 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod74 yyvals = yybadprod 74 yyvals;
private yyprod75 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod75 yyvals = yybadprod 75 yyvals;
private yyprod76 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod76 yyvals = yybadprod 76 yyvals;
private yyprod77 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod77 yyvals = yybadprod 77 yyvals;
private yyprod78 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod78 yyvals = yybadprod 78 yyvals;
private yyprod79 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod79 yyvals = yybadprod 79 yyvals;
private yyprod80 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod80 yyvals = yybadprod 80 yyvals;
private yyprod81 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod81 yyvals = yybadprod 81 yyvals;
private yyprod82 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod82 yyvals = yybadprod 82 yyvals;
private yyprod83 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod83 yyvals = yybadprod 83 yyvals;
private yyprod84 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod84 yyvals = yybadprod 84 yyvals;
private yyprod85 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod85 yyvals = yybadprod 85 yyvals;
private yyprod86 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod86 yyvals = yybadprod 86 yyvals;
private yyprod87 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod87 yyvals = yybadprod 87 yyvals;
private yyprod88 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod88 yyvals = yybadprod 88 yyvals;
private yyprod89 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod89 yyvals = yybadprod 89 yyvals;
private yyprod90 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod90 yyvals = yybadprod 90 yyvals;
private yyprod91 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod91 yyvals = yybadprod 91 yyvals;
private yyprod92 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod92 yyvals = yybadprod 92 yyvals;
private yyprod93 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod93 yyvals = yybadprod 93 yyvals;
private yyprod94 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod94 yyvals = yybadprod 94 yyvals;
private yyprod95 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod95 yyvals = yybadprod 95 yyvals;
private yyprod96 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod96 yyvals = yybadprod 96 yyvals;
private yyprod97 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod97 yyvals = yybadprod 97 yyvals;
private yyprod98 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod98 yyvals = yybadprod 98 yyvals;
private yyprod99 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod99 yyvals = yybadprod 99 yyvals;
private yyprod100 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod100 yyvals = yybadprod 100 yyvals;
private yyprod101 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod101 yyvals = yybadprod 101 yyvals;
private yyprod102 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod102 yyvals = yybadprod 102 yyvals;
private yyprod103 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod103 yyvals = yybadprod 103 yyvals;
private yyprod104 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod104 yyvals = yybadprod 104 yyvals;
private yyprod105 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod105 yyvals = yybadprod 105 yyvals;
private yyprod106 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod106 yyvals = yybadprod 106 yyvals;
private yyprod107 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTjtoken (yy1), yyvs);
private yyprod107 yyvals = yybadprod 107 yyvals;
private yyprod108 ((_, (YYNTjtoken yy1)):yyvs) =  do { let {!yyr = reduce108 yy1}; YYM.pure (YYNTjtokens yyr, yyvs)};
private yyprod108 yyvals = yybadprod 108 yyvals;
private yyprod109 ((_, (YYNTjtokens yy2)):(_, (YYNTjtoken yy1)):yyvs) =  do { let {!yyr = reduce109 yy1 yy2}; YYM.pure (YYNTjtokens yyr, yyvs)};
private yyprod109 yyvals = yybadprod 109 yyvals;
private yyprod110 ((_, (YYTok yy3)):(_, (YYNTjtokens yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce110 yy1 yy2 yy3}; YYM.pure (YYNTjtokens yyr, yyvs)};
private yyprod110 yyvals = yybadprod 110 yyvals;
private yyprod111 ((_, (YYNTjtokens yy4)):(_, (YYTok yy3)):(_, (YYNTjtokens yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce111 yy1 yy2 yy3 yy4}; YYM.pure (YYNTjtokens yyr, yyvs)};
private yyprod111 yyvals = yybadprod 111 yyvals;
private yyprod112 ((_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce112 yy1 yy2}; YYM.pure (YYNTjtokens yyr, yyvs)};
private yyprod112 yyvals = yybadprod 112 yyvals;
private yyprod113 ((_, (YYNTjtokens yy3)):(_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce113 yy1 yy2 yy3}; YYM.pure (YYNTjtokens yyr, yyvs)};
private yyprod113 yyvals = yybadprod 113 yyvals;
private yyprod114 ((_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce114 yy1}; YYM.pure (YYNTdocumentation yyr, yyvs)};
private yyprod114 yyvals = yybadprod 114 yyvals;
private yyprod115 ((_, (YYNTtypedef yy1)):yyvs) =  do { let {!yyr = reduce115 yy1}; YYM.pure (YYNTpublicdefinition yyr, yyvs)};
private yyprod115 yyvals = yybadprod 115 yyvals;
private yyprod116 ((_, (YYNTdatadef yy1)):yyvs) =  do { let {!yyr = reduce116 yy1}; YYM.pure (YYNTpublicdefinition yyr, yyvs)};
private yyprod116 yyvals = yybadprod 116 yyvals;
private yyprod117 ((_, (YYNTclassdef yy1)):yyvs) =  do { let {!yyr = reduce117 yy1}; YYM.pure (YYNTpublicdefinition yyr, yyvs)};
private yyprod117 yyvals = yybadprod 117 yyvals;
private yyprod118 ((_, (YYNTinstdef yy1)):yyvs) =  do { let {!yyr = reduce118 yy1}; YYM.pure (YYNTpublicdefinition yyr, yyvs)};
private yyprod118 yyvals = yybadprod 118 yyvals;
private yyprod119 ((_, (YYNTderivedef yy1)):yyvs) =  do { let {!yyr = reduce119 yy1}; YYM.pure (YYNTpublicdefinition yyr, yyvs)};
private yyprod119 yyvals = yybadprod 119 yyvals;
private yyprod120 ((_, (YYNTlocaldef yy1)):yyvs) = YYM.pure (YYNTpublicdefinition (yy1), yyvs);
private yyprod120 yyvals = yybadprod 120 yyvals;
private yyprod121 ((_, (YYNTdplocaldef yy1)):yyvs) = YYM.pure (YYNTlocaldefs (yy1), yyvs);
private yyprod121 yyvals = yybadprod 121 yyvals;
private yyprod122 ((_, (YYTok yy2)):(_, (YYNTdplocaldef yy1)):yyvs) =  do { let {!yyr = reduce122 yy1 yy2}; YYM.pure (YYNTlocaldefs yyr, yyvs)};
private yyprod122 yyvals = yybadprod 122 yyvals;
private yyprod123 ((_, (YYNTlocaldefs yy3)):(_, (YYTok yy2)):(_, (YYNTdplocaldef yy1)):yyvs) =  do { let {!yyr = reduce123 yy1 yy2 yy3}; YYM.pure (YYNTlocaldefs yyr, yyvs)};
private yyprod123 yyvals = yybadprod 123 yyvals;
private yyprod124 ((_, (YYNTannotation yy1)):yyvs) = YYM.pure (YYNTlocaldef (yy1), yyvs);
private yyprod124 yyvals = yybadprod 124 yyvals;
private yyprod125 ((_, (YYNTnativedef yy1)):yyvs) =  do { let {!yyr = reduce125 yy1}; YYM.pure (YYNTlocaldef yyr, yyvs)};
private yyprod125 yyvals = yybadprod 125 yyvals;
private yyprod126 ((_, (YYNTfundef yy1)):yyvs) = YYM.pure (YYNTlocaldef (yy1), yyvs);
private yyprod126 yyvals = yybadprod 126 yyvals;
private yyprod127 ((_, (YYNTlocaldef yy1)):yyvs) = YYM.pure (YYNTplocaldef (yy1), yyvs);
private yyprod127 yyvals = yybadprod 127 yyvals;
private yyprod128 ((_, (YYNTlocaldef yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce128 yy1 yy2}; YYM.pure (YYNTplocaldef yyr, yyvs)};
private yyprod128 yyvals = yybadprod 128 yyvals;
private yyprod129 ((_, (YYNTlocaldef yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce129 yy1 yy2}; YYM.pure (YYNTplocaldef yyr, yyvs)};
private yyprod129 yyvals = yybadprod 129 yyvals;
private yyprod130 ((_, (YYNTlocaldef yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce130 yy1 yy2}; YYM.pure (YYNTplocaldef yyr, yyvs)};
private yyprod130 yyvals = yybadprod 130 yyvals;
private yyprod131 ((_, (YYNTdocumentation yy1)):yyvs) =  do { let {!yyr = reduce131 yy1}; YYM.pure (YYNTdplocaldef yyr, yyvs)};
private yyprod131 yyvals = yybadprod 131 yyvals;
private yyprod132 ((_, (YYNTdplocaldef yy2)):(_, (YYNTdocumentation yy1)):yyvs) =  do { let {!yyr = reduce132 yy1 yy2}; YYM.pure (YYNTdplocaldef yyr, yyvs)};
private yyprod132 yyvals = yybadprod 132 yyvals;
private yyprod133 ((_, (YYNTplocaldef yy1)):yyvs) = YYM.pure (YYNTdplocaldef (yy1), yyvs);
private yyprod133 yyvals = yybadprod 133 yyvals;
private yyprod134 ((_, (YYNTannotation yy1)):yyvs) = YYM.pure (YYNTletdef (yy1), yyvs);
private yyprod134 yyvals = yybadprod 134 yyvals;
private yyprod135 ((_, (YYNTfundef yy1)):yyvs) = YYM.pure (YYNTletdef (yy1), yyvs);
private yyprod135 yyvals = yybadprod 135 yyvals;
private yyprod136 ((_, (YYNTletdef yy1)):yyvs) = YYM.pure (YYNTletdefs (yy1), yyvs);
private yyprod136 yyvals = yybadprod 136 yyvals;
private yyprod137 ((_, (YYTok yy2)):(_, (YYNTletdef yy1)):yyvs) =  do { let {!yyr = reduce137 yy1 yy2}; YYM.pure (YYNTletdefs yyr, yyvs)};
private yyprod137 yyvals = yybadprod 137 yyvals;
private yyprod138 ((_, (YYNTletdefs yy3)):(_, (YYTok yy2)):(_, (YYNTletdef yy1)):yyvs) =  do { let {!yyr = reduce138 yy1 yy2 yy3}; YYM.pure (YYNTletdefs yyr, yyvs)};
private yyprod138 yyvals = yybadprod 138 yyvals;
private yyprod139 ((_, (YYNTimportliste yy3)):(_, (YYNTmodulename yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce139 yy1 yy2 yy3}; YYM.pure (YYNTimport yyr, yyvs)};
private yyprod139 yyvals = yybadprod 139 yyvals;
private yyprod140 ((_, (YYNTimportliste yy5)):(_, (YYTok yy4)):(_, (YYTok yy3)):(_, (YYNTmodulename yy2)):(_, (YYTok yy1)):yyvs) =  do { yyr <- reduce140 yy1 yy2 yy3 yy4 yy5 ;YYM.pure (YYNTimport yyr, yyvs)};
private yyprod140 yyvals = yybadprod 140 yyvals;
private yyprod141 ((_, (YYNTimportliste yy4)):(_, (YYTok yy3)):(_, (YYNTmodulename yy2)):(_, (YYTok yy1)):yyvs) =  do { yyr <- reduce141 yy1 yy2 yy3 yy4 ;YYM.pure (YYNTimport yyr, yyvs)};
private yyprod141 yyvals = yybadprod 141 yyvals;
private yyprod142 yyvs =  do { let {!yyr = reduce142 }; YYM.pure (YYNTimportliste yyr, yyvs)};
private yyprod143 ((_, (YYTok yy4)):(_, (YYNTimportspecs yy3)):(_, (YYTok yy2)):(_, (YYNTvarid yy1)):yyvs) =  do { yyr <- reduce143 yy1 yy2 yy3 yy4 ;YYM.pure (YYNTimportliste yyr, yyvs)};
private yyprod143 yyvals = yybadprod 143 yyvals;
private yyprod144 ((_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce144 yy1 yy2}; YYM.pure (YYNTimportliste yyr, yyvs)};
private yyprod144 yyvals = yybadprod 144 yyvals;
private yyprod145 ((_, (YYTok yy3)):(_, (YYNTimportspecs yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce145 yy1 yy2 yy3}; YYM.pure (YYNTimportliste yyr, yyvs)};
private yyprod145 yyvals = yybadprod 145 yyvals;
private yyprod146 ((_, (YYNTimportliste yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce146 yy1 yy2}; YYM.pure (YYNTimportliste yyr, yyvs)};
private yyprod146 yyvals = yybadprod 146 yyvals;
private yyprod147 ((_, (YYNTimportspec yy1)):yyvs) =  do { let {!yyr = reduce147 yy1}; YYM.pure (YYNTimportspecs yyr, yyvs)};
private yyprod147 yyvals = yybadprod 147 yyvals;
private yyprod148 ((_, (YYTok yy2)):(_, (YYNTimportspec yy1)):yyvs) =  do { let {!yyr = reduce148 yy1 yy2}; YYM.pure (YYNTimportspecs yyr, yyvs)};
private yyprod148 yyvals = yybadprod 148 yyvals;
private yyprod149 ((_, (YYNTimportspecs yy3)):(_, (YYTok yy2)):(_, (YYNTimportspec yy1)):yyvs) =  do { let {!yyr = reduce149 yy1 yy2 yy3}; YYM.pure (YYNTimportspecs yyr, yyvs)};
private yyprod149 yyvals = yybadprod 149 yyvals;
private yyprod150 ((_, (YYNTqvarid yy1)):yyvs) =  do { let {!yyr = reduce150 yy1}; YYM.pure (YYNTimportitem yyr, yyvs)};
private yyprod150 yyvals = yybadprod 150 yyvals;
private yyprod151 ((_, (YYTok yy4)):(_, (YYNTmemspecs yy3)):(_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce151 yy1 yy2 yy3 yy4}; YYM.pure (YYNTimportitem yyr, yyvs)};
private yyprod151 yyvals = yybadprod 151 yyvals;
private yyprod152 ((_, (YYTok yy3)):(_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce152 yy1 yy2 yy3}; YYM.pure (YYNTimportitem yyr, yyvs)};
private yyprod152 yyvals = yybadprod 152 yyvals;
private yyprod153 ((_, (YYNTqconid yy1)):yyvs) =  do { let {!yyr = reduce153 yy1}; YYM.pure (YYNTimportitem yyr, yyvs)};
private yyprod153 yyvals = yybadprod 153 yyvals;
private yyprod154 ((_, (YYNToperator yy1)):yyvs) =  do { let {!yyr = reduce154 yy1}; YYM.pure (YYNTimportitem yyr, yyvs)};
private yyprod154 yyvals = yybadprod 154 yyvals;
private yyprod155 ((_, (YYNTunop yy1)):yyvs) =  do { let {!yyr = reduce155 yy1}; YYM.pure (YYNTimportitem yyr, yyvs)};
private yyprod155 yyvals = yybadprod 155 yyvals;
private yyprod156 ((_, (YYNTimportitem yy1)):yyvs) =  do { let {!yyr = reduce156 yy1}; YYM.pure (YYNTimportspec yyr, yyvs)};
private yyprod156 yyvals = yybadprod 156 yyvals;
private yyprod157 ((_, (YYNTalias yy2)):(_, (YYNTimportitem yy1)):yyvs) =  do { let {!yyr = reduce157 yy1 yy2}; YYM.pure (YYNTimportspec yyr, yyvs)};
private yyprod157 yyvals = yybadprod 157 yyvals;
private yyprod158 ((_, (YYNTimportspec yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce158 yy1 yy2}; YYM.pure (YYNTimportspec yyr, yyvs)};
private yyprod158 yyvals = yybadprod 158 yyvals;
private yyprod159 ((_, (YYNTalias yy1)):yyvs) =  do { let {!yyr = reduce159 yy1}; YYM.pure (YYNTmemspec yyr, yyvs)};
private yyprod159 yyvals = yybadprod 159 yyvals;
private yyprod160 ((_, (YYNTalias yy2)):(_, (YYNTalias yy1)):yyvs) =  do { let {!yyr = reduce160 yy1 yy2}; YYM.pure (YYNTmemspec yyr, yyvs)};
private yyprod160 yyvals = yybadprod 160 yyvals;
private yyprod161 ((_, (YYNTmemspec yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce161 yy1 yy2}; YYM.pure (YYNTmemspec yyr, yyvs)};
private yyprod161 yyvals = yybadprod 161 yyvals;
private yyprod162 ((_, (YYNTmemspec yy1)):yyvs) =  do { let {!yyr = reduce162 yy1}; YYM.pure (YYNTmemspecs yyr, yyvs)};
private yyprod162 yyvals = yybadprod 162 yyvals;
private yyprod163 ((_, (YYTok yy2)):(_, (YYNTmemspec yy1)):yyvs) =  do { let {!yyr = reduce163 yy1 yy2}; YYM.pure (YYNTmemspecs yyr, yyvs)};
private yyprod163 yyvals = yybadprod 163 yyvals;
private yyprod164 ((_, (YYNTmemspecs yy3)):(_, (YYTok yy2)):(_, (YYNTmemspec yy1)):yyvs) =  do { let {!yyr = reduce164 yy1 yy2 yy3}; YYM.pure (YYNTmemspecs yyr, yyvs)};
private yyprod164 yyvals = yybadprod 164 yyvals;
private yyprod165 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTalias (yy1), yyvs);
private yyprod165 yyvals = yybadprod 165 yyvals;
private yyprod166 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTalias (yy1), yyvs);
private yyprod166 yyvals = yybadprod 166 yyvals;
private yyprod167 ((_, (YYNToperator yy1)):yyvs) =  do { yyr <- reduce167 yy1 ;YYM.pure (YYNTalias yyr, yyvs)};
private yyprod167 yyvals = yybadprod 167 yyvals;
private yyprod168 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTvarid (yy1), yyvs);
private yyprod168 yyvals = yybadprod 168 yyvals;
private yyprod169 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTvaridkw (yy1), yyvs);
private yyprod169 yyvals = yybadprod 169 yyvals;
private yyprod170 ((_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce170 yy1}; YYM.pure (YYNTvaridkw yyr, yyvs)};
private yyprod170 yyvals = yybadprod 170 yyvals;
private yyprod171 ((_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce171 yy1}; YYM.pure (YYNTvaridkw yyr, yyvs)};
private yyprod171 yyvals = yybadprod 171 yyvals;
private yyprod172 ((_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce172 yy1}; YYM.pure (YYNTvaridkw yyr, yyvs)};
private yyprod172 yyvals = yybadprod 172 yyvals;
private yyprod173 ((_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce173 yy1}; YYM.pure (YYNTvaridkw yyr, yyvs)};
private yyprod173 yyvals = yybadprod 173 yyvals;
private yyprod174 ((_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce174 yy1}; YYM.pure (YYNTvaridkw yyr, yyvs)};
private yyprod174 yyvals = yybadprod 174 yyvals;
private yyprod175 ((_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce175 yy1}; YYM.pure (YYNTvaridkw yyr, yyvs)};
private yyprod175 yyvals = yybadprod 175 yyvals;
private yyprod176 ((_, (YYNTqvarop yy1)):yyvs) =  do { let {!yyr = reduce176 yy1}; YYM.pure (YYNTqvarids yyr, yyvs)};
private yyprod176 yyvals = yybadprod 176 yyvals;
private yyprod177 ((_, (YYNTqvarids yy3)):(_, (YYTok yy2)):(_, (YYNTqvarop yy1)):yyvs) =  do { let {!yyr = reduce177 yy1 yy2 yy3}; YYM.pure (YYNTqvarids yyr, yyvs)};
private yyprod177 yyvals = yybadprod 177 yyvals;
private yyprod178 ((_, (YYNTvarop yy3)):(_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce178 yy1 yy2 yy3}; YYM.pure (YYNTqvarid yyr, yyvs)};
private yyprod178 yyvals = yybadprod 178 yyvals;
private yyprod179 ((_, (YYNTvarop yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce179 yy1 yy2}; YYM.pure (YYNTqvarid yyr, yyvs)};
private yyprod179 yyvals = yybadprod 179 yyvals;
private yyprod180 ((_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce180 yy1}; YYM.pure (YYNTqvarid yyr, yyvs)};
private yyprod180 yyvals = yybadprod 180 yyvals;
private yyprod181 ((_, (YYTok yy3)):(_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce181 yy1 yy2 yy3}; YYM.pure (YYNTqconid yyr, yyvs)};
private yyprod181 yyvals = yybadprod 181 yyvals;
private yyprod182 ((_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce182 yy1 yy2}; YYM.pure (YYNTqconid yyr, yyvs)};
private yyprod182 yyvals = yybadprod 182 yyvals;
private yyprod183 ((_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce183 yy1}; YYM.pure (YYNTqconid yyr, yyvs)};
private yyprod183 yyvals = yybadprod 183 yyvals;
private yyprod184 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTvarop (yy1), yyvs);
private yyprod184 yyvals = yybadprod 184 yyvals;
private yyprod185 ((_, (YYNTunop yy1)):yyvs) = YYM.pure (YYNTvarop (yy1), yyvs);
private yyprod185 yyvals = yybadprod 185 yyvals;
private yyprod186 ((_, (YYNTvarop yy3)):(_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce186 yy1 yy2 yy3}; YYM.pure (YYNTqvarop yyr, yyvs)};
private yyprod186 yyvals = yybadprod 186 yyvals;
private yyprod187 ((_, (YYNTvarop yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce187 yy1 yy2}; YYM.pure (YYNTqvarop yyr, yyvs)};
private yyprod187 yyvals = yybadprod 187 yyvals;
private yyprod188 ((_, (YYNTvarop yy1)):yyvs) =  do { let {!yyr = reduce188 yy1}; YYM.pure (YYNTqvarop yyr, yyvs)};
private yyprod188 yyvals = yybadprod 188 yyvals;
private yyprod189 ((_, (YYNToperator yy1)):yyvs) =  do { let {!yyr = reduce189 yy1}; YYM.pure (YYNTqvarop yyr, yyvs)};
private yyprod189 yyvals = yybadprod 189 yyvals;
private yyprod190 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNToperator (yy1), yyvs);
private yyprod190 yyvals = yybadprod 190 yyvals;
private yyprod191 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTunop (yy1), yyvs);
private yyprod191 yyvals = yybadprod 191 yyvals;
private yyprod192 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTunop (yy1), yyvs);
private yyprod192 yyvals = yybadprod 192 yyvals;
private yyprod193 ((_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { yyr <- reduce193 yy1 yy2 ;YYM.pure (YYNTfixity yyr, yyvs)};
private yyprod193 yyvals = yybadprod 193 yyvals;
private yyprod194 ((_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { yyr <- reduce194 yy1 yy2 ;YYM.pure (YYNTfixity yyr, yyvs)};
private yyprod194 yyvals = yybadprod 194 yyvals;
private yyprod195 ((_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { yyr <- reduce195 yy1 yy2 ;YYM.pure (YYNTfixity yyr, yyvs)};
private yyprod195 yyvals = yybadprod 195 yyvals;
private yyprod196 ((_, (YYNToperator yy1)):yyvs) =  do { let {!yyr = reduce196 yy1}; YYM.pure (YYNTopstring yyr, yyvs)};
private yyprod196 yyvals = yybadprod 196 yyvals;
private yyprod197 ((_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce197 yy1}; YYM.pure (YYNTopstring yyr, yyvs)};
private yyprod197 yyvals = yybadprod 197 yyvals;
private yyprod198 ((_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce198 yy1}; YYM.pure (YYNTopstring yyr, yyvs)};
private yyprod198 yyvals = yybadprod 198 yyvals;
private yyprod199 ((_, (YYNTopstring yy1)):yyvs) =  do { let {!yyr = reduce199 yy1}; YYM.pure (YYNToperators yyr, yyvs)};
private yyprod199 yyvals = yybadprod 199 yyvals;
private yyprod200 ((_, (YYNToperators yy2)):(_, (YYNTopstring yy1)):yyvs) =  do { let {!yyr = reduce200 yy1 yy2}; YYM.pure (YYNToperators yyr, yyvs)};
private yyprod200 yyvals = yybadprod 200 yyvals;
private yyprod201 ((_, (YYNToperators yy2)):(_, (YYNTfixity yy1)):yyvs) =  do { let {!yyr = reduce201 yy1 yy2}; YYM.pure (YYNTinfix yyr, yyvs)};
private yyprod201 yyvals = yybadprod 201 yyvals;
private yyprod202 ((_, (YYNTsigma yy3)):(_, (YYTok yy2)):(_, (YYNTannoitems yy1)):yyvs) =  do { let {!yyr = reduce202 yy1 yy2 yy3}; YYM.pure (YYNTannotation yyr, yyvs)};
private yyprod202 yyvals = yybadprod 202 yyvals;
private yyprod203 ((_, (YYNTvarid yy1)):yyvs) = YYM.pure (YYNTannoitem (yy1), yyvs);
private yyprod203 yyvals = yybadprod 203 yyvals;
private yyprod204 ((_, (YYTok yy3)):(_, (YYNToperator yy2)):(_, (YYTok yy1)):yyvs) =  do { yyr <- reduce204 yy1 yy2 yy3 ;YYM.pure (YYNTannoitem yyr, yyvs)};
private yyprod204 yyvals = yybadprod 204 yyvals;
private yyprod205 ((_, (YYTok yy3)):(_, (YYNTunop yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce205 yy1 yy2 yy3}; YYM.pure (YYNTannoitem yyr, yyvs)};
private yyprod205 yyvals = yybadprod 205 yyvals;
private yyprod206 ((_, (YYTok yy3)):(_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce206 yy1 yy2 yy3}; YYM.pure (YYNTannoitem yyr, yyvs)};
private yyprod206 yyvals = yybadprod 206 yyvals;
private yyprod207 ((_, (YYNTannoitem yy1)):yyvs) =  do { let {!yyr = reduce207 yy1}; YYM.pure (YYNTannoitems yyr, yyvs)};
private yyprod207 yyvals = yybadprod 207 yyvals;
private yyprod208 ((_, (YYNTannoitems yy3)):(_, (YYTok yy2)):(_, (YYNTannoitem yy1)):yyvs) =  do { let {!yyr = reduce208 yy1 yy2 yy3}; YYM.pure (YYNTannoitems yyr, yyvs)};
private yyprod208 yyvals = yybadprod 208 yyvals;
private yyprod209 ((_, (YYNTimpurenativedef yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce209 yy1 yy2}; YYM.pure (YYNTnativedef yyr, yyvs)};
private yyprod209 yyvals = yybadprod 209 yyvals;
private yyprod210 ((_, (YYNTimpurenativedef yy1)):yyvs) = YYM.pure (YYNTnativedef (yy1), yyvs);
private yyprod210 yyvals = yybadprod 210 yyvals;
private yyprod211 ((_, (YYNTannoitem yy1)):yyvs) = YYM.pure (YYNTfitem (yy1), yyvs);
private yyprod211 yyvals = yybadprod 211 yyvals;
private yyprod212 ((_, (YYNTunop yy1)):yyvs) = YYM.pure (YYNTfitem (yy1), yyvs);
private yyprod212 yyvals = yybadprod 212 yyvals;
private yyprod213 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTfitem (yy1), yyvs);
private yyprod213 yyvals = yybadprod 213 yyvals;
private yyprod214 ((_, (YYNToperator yy1)):yyvs) =  do { yyr <- reduce214 yy1 ;YYM.pure (YYNTfitem yyr, yyvs)};
private yyprod214 yyvals = yybadprod 214 yyvals;
private yyprod215 ((_, (YYNTnativename yy1)):yyvs) = YYM.pure (YYNTjitem (yy1), yyvs);
private yyprod215 yyvals = yybadprod 215 yyvals;
private yyprod216 ((_, (YYNToperator yy1)):yyvs) =  do { yyr <- reduce216 yy1 ;YYM.pure (YYNTjitem yyr, yyvs)};
private yyprod216 yyvals = yybadprod 216 yyvals;
private yyprod217 ((_, (YYNTunop yy1)):yyvs) =  do { let {!yyr = reduce217 yy1}; YYM.pure (YYNTjitem yyr, yyvs)};
private yyprod217 yyvals = yybadprod 217 yyvals;
private yyprod218 ((_, (YYNTgargs yy3)):(_, (YYNTjitem yy2)):(_, (YYNTfitem yy1)):yyvs) =  do { let {!yyr = reduce218 yy1 yy2 yy3}; YYM.pure (YYNTmethodspec yyr, yyvs)};
private yyprod218 yyvals = yybadprod 218 yyvals;
private yyprod219 ((_, (YYNTjitem yy2)):(_, (YYNTfitem yy1)):yyvs) =  do { let {!yyr = reduce219 yy1 yy2}; YYM.pure (YYNTmethodspec yyr, yyvs)};
private yyprod219 yyvals = yybadprod 219 yyvals;
private yyprod220 ((_, (YYNTgargs yy2)):(_, (YYNTfitem yy1)):yyvs) =  do { let {!yyr = reduce220 yy1 yy2}; YYM.pure (YYNTmethodspec yyr, yyvs)};
private yyprod220 yyvals = yybadprod 220 yyvals;
private yyprod221 ((_, (YYNTfitem yy1)):yyvs) =  do { let {!yyr = reduce221 yy1}; YYM.pure (YYNTmethodspec yyr, yyvs)};
private yyprod221 yyvals = yybadprod 221 yyvals;
private yyprod222 ((_, (YYNTtauSC yy3)):(_, (YYTok yy2)):(_, (YYNTsigma yy1)):yyvs) =  do { let {!yyr = reduce222 yy1 yy2 yy3}; YYM.pure (YYNTsigex yyr, yyvs)};
private yyprod222 yyvals = yybadprod 222 yyvals;
private yyprod223 ((_, (YYNTsigma yy1)):yyvs) =  do { let {!yyr = reduce223 yy1}; YYM.pure (YYNTsigex yyr, yyvs)};
private yyprod223 yyvals = yybadprod 223 yyvals;
private yyprod224 ((_, (YYNTsigex yy1)):yyvs) =  do { let {!yyr = reduce224 yy1}; YYM.pure (YYNTsigexs yyr, yyvs)};
private yyprod224 yyvals = yybadprod 224 yyvals;
private yyprod225 ((_, (YYNTsigexs yy3)):(_, (YYTok yy2)):(_, (YYNTsigex yy1)):yyvs) =  do { let {!yyr = reduce225 yy1 yy2 yy3}; YYM.pure (YYNTsigexs yyr, yyvs)};
private yyprod225 yyvals = yybadprod 225 yyvals;
private yyprod226 ((_, (YYNTsigexs yy4)):(_, (YYTok yy3)):(_, (YYNTmethodspec yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce226 yy1 yy2 yy3 yy4}; YYM.pure (YYNTimpurenativedef yyr, yyvs)};
private yyprod226 yyvals = yybadprod 226 yyvals;
private yyprod227 ((_, (YYNTforall yy1)):yyvs) = YYM.pure (YYNTsigma (yy1), yyvs);
private yyprod227 yyvals = yybadprod 227 yyvals;
private yyprod228 ((_, (YYNTrho yy1)):yyvs) =  do { let {!yyr = reduce228 yy1}; YYM.pure (YYNTsigma yyr, yyvs)};
private yyprod228 yyvals = yybadprod 228 yyvals;
private yyprod229 ((_, (YYNTrho yy4)):(_, (YYNTmbdot yy3)):(_, (YYNTdvars yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce229 yy1 yy2 yy3 yy4}; YYM.pure (YYNTforall yyr, yyvs)};
private yyprod229 yyvals = yybadprod 229 yyvals;
private yyprod230 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTmbdot (yy1), yyvs);
private yyprod230 yyvals = yybadprod 230 yyvals;
private yyprod231 ((_, (YYTok yy1)):yyvs) =  do { yyr <- reduce231 yy1 ;YYM.pure (YYNTmbdot yyr, yyvs)};
private yyprod231 yyvals = yybadprod 231 yyvals;
private yyprod232 ((_, (YYNTrhofun yy3)):(_, (YYTok yy2)):(_, (YYNTtapp yy1)):yyvs) =  do { yyr <- reduce232 yy1 yy2 yy3 ;YYM.pure (YYNTrho yyr, yyvs)};
private yyprod232 yyvals = yybadprod 232 yyvals;
private yyprod233 ((_, (YYNTrhofun yy1)):yyvs) = YYM.pure (YYNTrho (yy1), yyvs);
private yyprod233 yyvals = yybadprod 233 yyvals;
private yyprod234 ((_, (YYNTtapp yy1)):yyvs) =  do { let {!yyr = reduce234 yy1}; YYM.pure (YYNTrhofun yyr, yyvs)};
private yyprod234 yyvals = yybadprod 234 yyvals;
private yyprod235 ((_, (YYNTrhofun yy3)):(_, (YYTok yy2)):(_, (YYNTtapp yy1)):yyvs) =  do { let {!yyr = reduce235 yy1 yy2 yy3}; YYM.pure (YYNTrhofun yyr, yyvs)};
private yyprod235 yyvals = yybadprod 235 yyvals;
private yyprod236 ((_, (YYNTtapp yy1)):yyvs) = YYM.pure (YYNTtau (yy1), yyvs);
private yyprod236 yyvals = yybadprod 236 yyvals;
private yyprod237 ((_, (YYNTforall yy1)):yyvs) =  do { let {!yyr = reduce237 yy1}; YYM.pure (YYNTtau yyr, yyvs)};
private yyprod237 yyvals = yybadprod 237 yyvals;
private yyprod238 ((_, (YYNTtau yy3)):(_, (YYTok yy2)):(_, (YYNTtapp yy1)):yyvs) =  do { let {!yyr = reduce238 yy1 yy2 yy3}; YYM.pure (YYNTtau yyr, yyvs)};
private yyprod238 yyvals = yybadprod 238 yyvals;
private yyprod239 ((_, (YYNTtau yy1)):yyvs) =  do { let {!yyr = reduce239 yy1}; YYM.pure (YYNTtauSC yyr, yyvs)};
private yyprod239 yyvals = yybadprod 239 yyvals;
private yyprod240 ((_, (YYNTtauSC yy3)):(_, (YYTok yy2)):(_, (YYNTtau yy1)):yyvs) =  do { let {!yyr = reduce240 yy1 yy2 yy3}; YYM.pure (YYNTtauSC yyr, yyvs)};
private yyprod240 yyvals = yybadprod 240 yyvals;
private yyprod241 ((_, (YYNTtau yy1)):yyvs) =  do { let {!yyr = reduce241 yy1}; YYM.pure (YYNTtauSB yyr, yyvs)};
private yyprod241 yyvals = yybadprod 241 yyvals;
private yyprod242 ((_, (YYNTtauSB yy3)):(_, (YYTok yy2)):(_, (YYNTtau yy1)):yyvs) =  do { let {!yyr = reduce242 yy1 yy2 yy3}; YYM.pure (YYNTtauSB yyr, yyvs)};
private yyprod242 yyvals = yybadprod 242 yyvals;
private yyprod243 ((_, (YYNTsimpletypes yy1)):yyvs) =  do { let {!yyr = reduce243 yy1}; YYM.pure (YYNTtapp yyr, yyvs)};
private yyprod243 yyvals = yybadprod 243 yyvals;
private yyprod244 ((_, (YYNTtyvar yy1)):yyvs) = YYM.pure (YYNTsimpletype (yy1), yyvs);
private yyprod244 yyvals = yybadprod 244 yyvals;
private yyprod245 ((_, (YYNTtyname yy1)):yyvs) =  do { let {!yyr = reduce245 yy1}; YYM.pure (YYNTsimpletype yyr, yyvs)};
private yyprod245 yyvals = yybadprod 245 yyvals;
private yyprod246 ((_, (YYTok yy3)):(_, (YYNTtau yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce246 yy1 yy2 yy3}; YYM.pure (YYNTsimpletype yyr, yyvs)};
private yyprod246 yyvals = yybadprod 246 yyvals;
private yyprod247 ((_, (YYTok yy5)):(_, (YYNTtauSC yy4)):(_, (YYTok yy3)):(_, (YYNTtau yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce247 yy1 yy2 yy3 yy4 yy5}; YYM.pure (YYNTsimpletype yyr, yyvs)};
private yyprod247 yyvals = yybadprod 247 yyvals;
private yyprod248 ((_, (YYTok yy5)):(_, (YYNTtauSB yy4)):(_, (YYTok yy3)):(_, (YYNTtau yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce248 yy1 yy2 yy3 yy4 yy5}; YYM.pure (YYNTsimpletype yyr, yyvs)};
private yyprod248 yyvals = yybadprod 248 yyvals;
private yyprod249 ((_, (YYTok yy3)):(_, (YYNTtau yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce249 yy1 yy2 yy3}; YYM.pure (YYNTsimpletype yyr, yyvs)};
private yyprod249 yyvals = yybadprod 249 yyvals;
private yyprod250 ((_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce250 yy1}; YYM.pure (YYNTtyvar yyr, yyvs)};
private yyprod250 yyvals = yybadprod 250 yyvals;
private yyprod251 ((_, (YYTok yy5)):(_, (YYNTkind yy4)):(_, (YYTok yy3)):(_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce251 yy1 yy2 yy3 yy4 yy5}; YYM.pure (YYNTtyvar yyr, yyvs)};
private yyprod251 yyvals = yybadprod 251 yyvals;
private yyprod252 ((_, (YYTok yy5)):(_, (YYNTtauSC yy4)):(_, (YYTok yy3)):(_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce252 yy1 yy2 yy3 yy4 yy5}; YYM.pure (YYNTtyvar yyr, yyvs)};
private yyprod252 yyvals = yybadprod 252 yyvals;
private yyprod253 ((_, (YYTok yy4)):(_, (YYNTtauSC yy3)):(_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce253 yy1 yy2 yy3 yy4}; YYM.pure (YYNTtyvar yyr, yyvs)};
private yyprod253 yyvals = yybadprod 253 yyvals;
private yyprod254 ((_, (YYTok yy4)):(_, (YYNTtapp yy3)):(_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce254 yy1 yy2 yy3 yy4}; YYM.pure (YYNTtyvar yyr, yyvs)};
private yyprod254 yyvals = yybadprod 254 yyvals;
private yyprod255 ((_, (YYNTqconid yy1)):yyvs) = YYM.pure (YYNTtyname (yy1), yyvs);
private yyprod255 yyvals = yybadprod 255 yyvals;
private yyprod256 ((_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce256 yy1 yy2}; YYM.pure (YYNTtyname yyr, yyvs)};
private yyprod256 yyvals = yybadprod 256 yyvals;
private yyprod257 ((_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce257 yy1 yy2}; YYM.pure (YYNTtyname yyr, yyvs)};
private yyprod257 yyvals = yybadprod 257 yyvals;
private yyprod258 ((_, (YYTok yy3)):(_, (YYNTcommata yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce258 yy1 yy2 yy3}; YYM.pure (YYNTtyname yyr, yyvs)};
private yyprod258 yyvals = yybadprod 258 yyvals;
private yyprod259 ((_, (YYTok yy3)):(_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce259 yy1 yy2 yy3}; YYM.pure (YYNTtyname yyr, yyvs)};
private yyprod259 yyvals = yybadprod 259 yyvals;
private yyprod260 ((_, (YYNTkind yy3)):(_, (YYTok yy2)):(_, (YYNTsimplekind yy1)):yyvs) =  do { let {!yyr = reduce260 yy1 yy2 yy3}; YYM.pure (YYNTkind yyr, yyvs)};
private yyprod260 yyvals = yybadprod 260 yyvals;
private yyprod261 ((_, (YYNTsimplekind yy1)):yyvs) = YYM.pure (YYNTkind (yy1), yyvs);
private yyprod261 yyvals = yybadprod 261 yyvals;
private yyprod262 ((_, (YYTok yy1)):yyvs) =  do { yyr <- reduce262 yy1 ;YYM.pure (YYNTsimplekind yyr, yyvs)};
private yyprod262 yyvals = yybadprod 262 yyvals;
private yyprod263 ((_, (YYTok yy3)):(_, (YYNTkind yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce263 yy1 yy2 yy3}; YYM.pure (YYNTsimplekind yyr, yyvs)};
private yyprod263 yyvals = yybadprod 263 yyvals;
private yyprod264 ((_, (YYNTtyvar yy2)):(_, (YYNTqconid yy1)):yyvs) =  do { let {!yyr = reduce264 yy1 yy2}; YYM.pure (YYNTscontext yyr, yyvs)};
private yyprod264 yyvals = yybadprod 264 yyvals;
private yyprod265 ((_, (YYNTscontext yy1)):yyvs) =  do { let {!yyr = reduce265 yy1}; YYM.pure (YYNTscontexts yyr, yyvs)};
private yyprod265 yyvals = yybadprod 265 yyvals;
private yyprod266 ((_, (YYTok yy2)):(_, (YYNTscontext yy1)):yyvs) =  do { let {!yyr = reduce266 yy1 yy2}; YYM.pure (YYNTscontexts yyr, yyvs)};
private yyprod266 yyvals = yybadprod 266 yyvals;
private yyprod267 ((_, (YYNTscontexts yy3)):(_, (YYTok yy2)):(_, (YYNTscontext yy1)):yyvs) =  do { let {!yyr = reduce267 yy1 yy2 yy3}; YYM.pure (YYNTscontexts yyr, yyvs)};
private yyprod267 yyvals = yybadprod 267 yyvals;
private yyprod268 ((_, (YYNTscontext yy1)):yyvs) =  do { let {!yyr = reduce268 yy1}; YYM.pure (YYNTccontext yyr, yyvs)};
private yyprod268 yyvals = yybadprod 268 yyvals;
private yyprod269 ((_, (YYTok yy3)):(_, (YYNTscontexts yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce269 yy1 yy2 yy3}; YYM.pure (YYNTccontext yyr, yyvs)};
private yyprod269 yyvals = yybadprod 269 yyvals;
private yyprod270 ((_, (YYNTwheredef yy6)):(_, (YYNTtyvar yy5)):(_, (YYTok yy4)):(_, (YYTok yy3)):(_, (YYNTccontext yy2)):(_, (YYTok yy1)):yyvs) =  do { yyr <- reduce270 yy1 yy2 yy3 yy4 yy5 yy6 ;YYM.pure (YYNTclassdef yyr, yyvs)};
private yyprod270 yyvals = yybadprod 270 yyvals;
private yyprod271 ((_, (YYNTwheredef yy3)):(_, (YYNTccontext yy2)):(_, (YYTok yy1)):yyvs) =  do { yyr <- reduce271 yy1 yy2 yy3 ;YYM.pure (YYNTclassdef yyr, yyvs)};
private yyprod271 yyvals = yybadprod 271 yyvals;
private yyprod272 ((_, (YYNTsimpletype yy2)):(_, (YYNTqconid yy1)):yyvs) =  do { let {!yyr = reduce272 yy1 yy2}; YYM.pure (YYNTsicontext yyr, yyvs)};
private yyprod272 yyvals = yybadprod 272 yyvals;
private yyprod273 ((_, (YYNTsicontext yy1)):yyvs) =  do { let {!yyr = reduce273 yy1}; YYM.pure (YYNTsicontexts yyr, yyvs)};
private yyprod273 yyvals = yybadprod 273 yyvals;
private yyprod274 ((_, (YYTok yy2)):(_, (YYNTsicontext yy1)):yyvs) =  do { let {!yyr = reduce274 yy1 yy2}; YYM.pure (YYNTsicontexts yyr, yyvs)};
private yyprod274 yyvals = yybadprod 274 yyvals;
private yyprod275 ((_, (YYNTsicontexts yy3)):(_, (YYTok yy2)):(_, (YYNTsicontext yy1)):yyvs) =  do { let {!yyr = reduce275 yy1 yy2 yy3}; YYM.pure (YYNTsicontexts yyr, yyvs)};
private yyprod275 yyvals = yybadprod 275 yyvals;
private yyprod276 ((_, (YYNTsicontext yy1)):yyvs) =  do { let {!yyr = reduce276 yy1}; YYM.pure (YYNTicontext yyr, yyvs)};
private yyprod276 yyvals = yybadprod 276 yyvals;
private yyprod277 ((_, (YYTok yy3)):(_, (YYNTsicontexts yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce277 yy1 yy2 yy3}; YYM.pure (YYNTicontext yyr, yyvs)};
private yyprod277 yyvals = yybadprod 277 yyvals;
private yyprod278 ((_, (YYNTsimpletype yy4)):(_, (YYNTtyname yy3)):(_, (YYTok yy2)):(_, (YYNTicontext yy1)):yyvs) =  do { let {!yyr = reduce278 yy1 yy2 yy3 yy4}; YYM.pure (YYNTinsthead yyr, yyvs)};
private yyprod278 yyvals = yybadprod 278 yyvals;
private yyprod279 ((_, (YYNTicontext yy1)):yyvs) =  do { yyr <- reduce279 yy1 ;YYM.pure (YYNTinsthead yyr, yyvs)};
private yyprod279 yyvals = yybadprod 279 yyvals;
private yyprod280 ((_, (YYNTwheredef yy3)):(_, (YYNTinsthead yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce280 yy1 yy2 yy3}; YYM.pure (YYNTinstdef yyr, yyvs)};
private yyprod280 yyvals = yybadprod 280 yyvals;
private yyprod281 ((_, (YYNTinsthead yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce281 yy1 yy2}; YYM.pure (YYNTderivedef yyr, yyvs)};
private yyprod281 yyvals = yybadprod 281 yyvals;
private yyprod282 ((_, (YYNTwheredef yy2)):(_, (YYNTdatainit yy1)):yyvs) =  do { let {!yyr = reduce282 yy1 yy2}; YYM.pure (YYNTdatadef yyr, yyvs)};
private yyprod282 yyvals = yybadprod 282 yyvals;
private yyprod283 ((_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce283 yy1 yy2}; YYM.pure (YYNTnativepur yyr, yyvs)};
private yyprod283 yyvals = yybadprod 283 yyvals;
private yyprod284 ((_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce284 yy1}; YYM.pure (YYNTnativepur yyr, yyvs)};
private yyprod284 yyvals = yybadprod 284 yyvals;
private yyprod285 ((_, (YYNTnativename yy1)):yyvs) =  do { let {!yyr = reduce285 yy1}; YYM.pure (YYNTnativespec yyr, yyvs)};
private yyprod285 yyvals = yybadprod 285 yyvals;
private yyprod286 ((_, (YYNTgargs yy2)):(_, (YYNTnativename yy1)):yyvs) =  do { let {!yyr = reduce286 yy1 yy2}; YYM.pure (YYNTnativespec yyr, yyvs)};
private yyprod286 yyvals = yybadprod 286 yyvals;
private yyprod287 ((_, (YYTok yy3)):(_, (YYNTtauSC yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce287 yy1 yy2 yy3}; YYM.pure (YYNTgargs yyr, yyvs)};
private yyprod287 yyvals = yybadprod 287 yyvals;
private yyprod288 ((_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce288 yy1 yy2}; YYM.pure (YYNTgargs yyr, yyvs)};
private yyprod288 yyvals = yybadprod 288 yyvals;
private yyprod289 ((_, (YYNTnativespec yy5)):(_, (YYNTnativepur yy4)):(_, (YYTok yy3)):(_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce289 yy1 yy2 yy3 yy4 yy5}; YYM.pure (YYNTdatainit yyr, yyvs)};
private yyprod289 yyvals = yybadprod 289 yyvals;
private yyprod290 ((_, (YYNTnativespec yy6)):(_, (YYNTnativepur yy5)):(_, (YYTok yy4)):(_, (YYNTdvars yy3)):(_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce290 yy1 yy2 yy3 yy4 yy5 yy6}; YYM.pure (YYNTdatainit yyr, yyvs)};
private yyprod290 yyvals = yybadprod 290 yyvals;
private yyprod291 ((_, (YYNTdalts yy5)):(_, (YYTok yy4)):(_, (YYNTdvars yy3)):(_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce291 yy1 yy2 yy3 yy4 yy5}; YYM.pure (YYNTdatainit yyr, yyvs)};
private yyprod291 yyvals = yybadprod 291 yyvals;
private yyprod292 ((_, (YYNTdalts yy4)):(_, (YYTok yy3)):(_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce292 yy1 yy2 yy3 yy4}; YYM.pure (YYNTdatainit yyr, yyvs)};
private yyprod292 yyvals = yybadprod 292 yyvals;
private yyprod293 ((_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce293 yy1 yy2}; YYM.pure (YYNTdatainit yyr, yyvs)};
private yyprod293 yyvals = yybadprod 293 yyvals;
private yyprod294 ((_, (YYNTdalt yy5)):(_, (YYTok yy4)):(_, (YYNTdvars yy3)):(_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce294 yy1 yy2 yy3 yy4 yy5}; YYM.pure (YYNTdatainit yyr, yyvs)};
private yyprod294 yyvals = yybadprod 294 yyvals;
private yyprod295 ((_, (YYNTdalt yy4)):(_, (YYTok yy3)):(_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce295 yy1 yy2 yy3 yy4}; YYM.pure (YYNTdatainit yyr, yyvs)};
private yyprod295 yyvals = yybadprod 295 yyvals;
private yyprod296 ((_, (YYNTtyvar yy1)):yyvs) =  do { let {!yyr = reduce296 yy1}; YYM.pure (YYNTdvars yyr, yyvs)};
private yyprod296 yyvals = yybadprod 296 yyvals;
private yyprod297 ((_, (YYNTdvars yy2)):(_, (YYNTtyvar yy1)):yyvs) =  do { let {!yyr = reduce297 yy1 yy2}; YYM.pure (YYNTdvars yyr, yyvs)};
private yyprod297 yyvals = yybadprod 297 yyvals;
private yyprod298 ((_, (YYNTdalt yy1)):yyvs) =  do { let {!yyr = reduce298 yy1}; YYM.pure (YYNTdalts yyr, yyvs)};
private yyprod298 yyvals = yybadprod 298 yyvals;
private yyprod299 ((_, (YYNTdalts yy3)):(_, (YYTok yy2)):(_, (YYNTdalt yy1)):yyvs) =  do { let {!yyr = reduce299 yy1 yy2 yy3}; YYM.pure (YYNTdalts yyr, yyvs)};
private yyprod299 yyvals = yybadprod 299 yyvals;
private yyprod300 ((_, (YYNTvisdalt yy1)):yyvs) = YYM.pure (YYNTdalt (yy1), yyvs);
private yyprod300 yyvals = yybadprod 300 yyvals;
private yyprod301 ((_, (YYTok yy2)):(_, (YYNTvisdalt yy1)):yyvs) =  do { let {!yyr = reduce301 yy1 yy2}; YYM.pure (YYNTdalt yyr, yyvs)};
private yyprod301 yyvals = yybadprod 301 yyvals;
private yyprod302 ((_, (YYNTvisdalt yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce302 yy1 yy2}; YYM.pure (YYNTdalt yyr, yyvs)};
private yyprod302 yyvals = yybadprod 302 yyvals;
private yyprod303 ((_, (YYNTstrictdalt yy1)):yyvs) = YYM.pure (YYNTvisdalt (yy1), yyvs);
private yyprod303 yyvals = yybadprod 303 yyvals;
private yyprod304 ((_, (YYNTstrictdalt yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce304 yy1 yy2}; YYM.pure (YYNTvisdalt yyr, yyvs)};
private yyprod304 yyvals = yybadprod 304 yyvals;
private yyprod305 ((_, (YYNTstrictdalt yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce305 yy1 yy2}; YYM.pure (YYNTvisdalt yyr, yyvs)};
private yyprod305 yyvals = yybadprod 305 yyvals;
private yyprod306 ((_, (YYNTstrictdalt yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce306 yy1 yy2}; YYM.pure (YYNTvisdalt yyr, yyvs)};
private yyprod306 yyvals = yybadprod 306 yyvals;
private yyprod307 ((_, (YYNTsimpledalt yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce307 yy1 yy2}; YYM.pure (YYNTstrictdalt yyr, yyvs)};
private yyprod307 yyvals = yybadprod 307 yyvals;
private yyprod308 ((_, (YYNTsimpledalt yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce308 yy1 yy2}; YYM.pure (YYNTstrictdalt yyr, yyvs)};
private yyprod308 yyvals = yybadprod 308 yyvals;
private yyprod309 ((_, (YYNTsimpledalt yy1)):yyvs) = YYM.pure (YYNTstrictdalt (yy1), yyvs);
private yyprod309 yyvals = yybadprod 309 yyvals;
private yyprod310 ((_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce310 yy1}; YYM.pure (YYNTsimpledalt yyr, yyvs)};
private yyprod310 yyvals = yybadprod 310 yyvals;
private yyprod311 ((_, (YYTok yy4)):(_, (YYNTconflds yy3)):(_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce311 yy1 yy2 yy3 yy4}; YYM.pure (YYNTsimpledalt yyr, yyvs)};
private yyprod311 yyvals = yybadprod 311 yyvals;
private yyprod312 ((_, (YYNTcontypes yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce312 yy1 yy2}; YYM.pure (YYNTsimpledalt yyr, yyvs)};
private yyprod312 yyvals = yybadprod 312 yyvals;
private yyprod313 ((_, (YYNTstrictcontype yy1)):yyvs) =  do { let {!yyr = reduce313 yy1}; YYM.pure (YYNTcontypes yyr, yyvs)};
private yyprod313 yyvals = yybadprod 313 yyvals;
private yyprod314 ((_, (YYNTcontypes yy2)):(_, (YYNTstrictcontype yy1)):yyvs) =  do { let {!yyr = reduce314 yy1 yy2}; YYM.pure (YYNTcontypes yyr, yyvs)};
private yyprod314 yyvals = yybadprod 314 yyvals;
private yyprod315 ((_, (YYNTcontype yy1)):yyvs) = YYM.pure (YYNTstrictcontype (yy1), yyvs);
private yyprod315 yyvals = yybadprod 315 yyvals;
private yyprod316 ((_, (YYNTcontype yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce316 yy1 yy2}; YYM.pure (YYNTstrictcontype yyr, yyvs)};
private yyprod316 yyvals = yybadprod 316 yyvals;
private yyprod317 ((_, (YYNTcontype yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce317 yy1 yy2}; YYM.pure (YYNTstrictcontype yyr, yyvs)};
private yyprod317 yyvals = yybadprod 317 yyvals;
private yyprod318 ((_, (YYNTsimpletype yy1)):yyvs) =  do { let {!yyr = reduce318 yy1}; YYM.pure (YYNTcontype yyr, yyvs)};
private yyprod318 yyvals = yybadprod 318 yyvals;
private yyprod319 ((_, (YYNTsimpletype yy1)):yyvs) =  do { let {!yyr = reduce319 yy1}; YYM.pure (YYNTsimpletypes yyr, yyvs)};
private yyprod319 yyvals = yybadprod 319 yyvals;
private yyprod320 ((_, (YYNTsimpletypes yy2)):(_, (YYNTsimpletype yy1)):yyvs) =  do { let {!yyr = reduce320 yy1 yy2}; YYM.pure (YYNTsimpletypes yyr, yyvs)};
private yyprod320 yyvals = yybadprod 320 yyvals;
private yyprod321 ((_, (YYNTconfld yy1)):yyvs) = YYM.pure (YYNTconflds (yy1), yyvs);
private yyprod321 yyvals = yybadprod 321 yyvals;
private yyprod322 ((_, (YYTok yy2)):(_, (YYNTconfld yy1)):yyvs) =  do { let {!yyr = reduce322 yy1 yy2}; YYM.pure (YYNTconflds yyr, yyvs)};
private yyprod322 yyvals = yybadprod 322 yyvals;
private yyprod323 ((_, (YYTok yy2)):(_, (YYNTconfld yy1)):yyvs) =  do { let {!yyr = reduce323 yy1 yy2}; YYM.pure (YYNTconflds yyr, yyvs)};
private yyprod323 yyvals = yybadprod 323 yyvals;
private yyprod324 ((_, (YYNTconflds yy3)):(_, (YYTok yy2)):(_, (YYNTconfld yy1)):yyvs) =  do { let {!yyr = reduce324 yy1 yy2 yy3}; YYM.pure (YYNTconflds yyr, yyvs)};
private yyprod324 yyvals = yybadprod 324 yyvals;
private yyprod325 ((_, (YYNTconflds yy3)):(_, (YYTok yy2)):(_, (YYNTconfld yy1)):yyvs) =  do { let {!yyr = reduce325 yy1 yy2 yy3}; YYM.pure (YYNTconflds yyr, yyvs)};
private yyprod325 yyvals = yybadprod 325 yyvals;
private yyprod326 ((_, (YYNTsigma yy4)):(_, (YYTok yy3)):(_, (YYNTfldids yy2)):(_, (YYNTdocsO yy1)):yyvs) =  do { let {!yyr = reduce326 yy1 yy2 yy3 yy4}; YYM.pure (YYNTconfld yyr, yyvs)};
private yyprod326 yyvals = yybadprod 326 yyvals;
private yyprod327 ((_, (YYNTfldid yy1)):yyvs) =  do { let {!yyr = reduce327 yy1}; YYM.pure (YYNTfldids yyr, yyvs)};
private yyprod327 yyvals = yybadprod 327 yyvals;
private yyprod328 ((_, (YYNTfldids yy3)):(_, (YYTok yy2)):(_, (YYNTfldid yy1)):yyvs) =  do { let {!yyr = reduce328 yy1 yy2 yy3}; YYM.pure (YYNTfldids yyr, yyvs)};
private yyprod328 yyvals = yybadprod 328 yyvals;
private yyprod329 ((_, (YYNTstrictfldid yy1)):yyvs) = YYM.pure (YYNTfldid (yy1), yyvs);
private yyprod329 yyvals = yybadprod 329 yyvals;
private yyprod330 ((_, (YYNTstrictfldid yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce330 yy1 yy2}; YYM.pure (YYNTfldid yyr, yyvs)};
private yyprod330 yyvals = yybadprod 330 yyvals;
private yyprod331 ((_, (YYNTstrictfldid yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce331 yy1 yy2}; YYM.pure (YYNTfldid yyr, yyvs)};
private yyprod331 yyvals = yybadprod 331 yyvals;
private yyprod332 ((_, (YYNTplainfldid yy1)):yyvs) = YYM.pure (YYNTstrictfldid (yy1), yyvs);
private yyprod332 yyvals = yybadprod 332 yyvals;
private yyprod333 ((_, (YYNTplainfldid yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce333 yy1 yy2}; YYM.pure (YYNTstrictfldid yyr, yyvs)};
private yyprod333 yyvals = yybadprod 333 yyvals;
private yyprod334 ((_, (YYNTplainfldid yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce334 yy1 yy2}; YYM.pure (YYNTstrictfldid yyr, yyvs)};
private yyprod334 yyvals = yybadprod 334 yyvals;
private yyprod335 ((_, (YYNTvarid yy1)):yyvs) =  do { let {!yyr = reduce335 yy1}; YYM.pure (YYNTplainfldid yyr, yyvs)};
private yyprod335 yyvals = yybadprod 335 yyvals;
private yyprod336 ((_, (YYNTsigma yy4)):(_, (YYTok yy3)):(_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce336 yy1 yy2 yy3 yy4}; YYM.pure (YYNTtypedef yyr, yyvs)};
private yyprod336 yyvals = yybadprod 336 yyvals;
private yyprod337 ((_, (YYNTsigma yy5)):(_, (YYTok yy4)):(_, (YYNTdvars yy3)):(_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce337 yy1 yy2 yy3 yy4 yy5}; YYM.pure (YYNTtypedef yyr, yyvs)};
private yyprod337 yyvals = yybadprod 337 yyvals;
private yyprod338 yyvs =  do { let {!yyr = reduce338 }; YYM.pure (YYNTwheredef yyr, yyvs)};
private yyprod339 ((_, (YYTok yy3)):(_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce339 yy1 yy2 yy3}; YYM.pure (YYNTwheredef yyr, yyvs)};
private yyprod339 yyvals = yybadprod 339 yyvals;
private yyprod340 ((_, (YYTok yy4)):(_, (YYNTlocaldefs yy3)):(_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce340 yy1 yy2 yy3 yy4}; YYM.pure (YYNTwheredef yyr, yyvs)};
private yyprod340 yyvals = yybadprod 340 yyvals;
private yyprod341 ((_, (YYTok yy3)):(_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce341 yy1 yy2 yy3}; YYM.pure (YYNTwherelet yyr, yyvs)};
private yyprod341 yyvals = yybadprod 341 yyvals;
private yyprod342 ((_, (YYTok yy4)):(_, (YYNTletdefs yy3)):(_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce342 yy1 yy2 yy3 yy4}; YYM.pure (YYNTwherelet yyr, yyvs)};
private yyprod342 yyvals = yybadprod 342 yyvals;
private yyprod343 ((_, (YYNTexpr yy3)):(_, (YYTok yy2)):(_, (YYNTfunhead yy1)):yyvs) =  do { let {!yyr = reduce343 yy1 yy2 yy3}; YYM.pure (YYNTfundef yyr, yyvs)};
private yyprod343 yyvals = yybadprod 343 yyvals;
private yyprod344 ((_, (YYNTguards yy2)):(_, (YYNTfunhead yy1)):yyvs) =  do { let {!yyr = reduce344 yy1 yy2}; YYM.pure (YYNTfundef yyr, yyvs)};
private yyprod344 yyvals = yybadprod 344 yyvals;
private yyprod345 ((_, (YYNTwherelet yy2)):(_, (YYNTfundef yy1)):yyvs) =  do { yyr <- reduce345 yy1 yy2 ;YYM.pure (YYNTfundef yyr, yyvs)};
private yyprod345 yyvals = yybadprod 345 yyvals;
private yyprod346 ((_, (YYNTbinex yy1)):yyvs) =  do { yyr <- reduce346 yy1 ;YYM.pure (YYNTfunhead yyr, yyvs)};
private yyprod346 yyvals = yybadprod 346 yyvals;
private yyprod347 ((_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce347 yy1}; YYM.pure (YYNTliteral yyr, yyvs)};
private yyprod347 yyvals = yybadprod 347 yyvals;
private yyprod348 ((_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce348 yy1}; YYM.pure (YYNTliteral yyr, yyvs)};
private yyprod348 yyvals = yybadprod 348 yyvals;
private yyprod349 ((_, (YYTok yy1)):yyvs) =  do { yyr <- reduce349 yy1 ;YYM.pure (YYNTliteral yyr, yyvs)};
private yyprod349 yyvals = yybadprod 349 yyvals;
private yyprod350 ((_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce350 yy1}; YYM.pure (YYNTliteral yyr, yyvs)};
private yyprod350 yyvals = yybadprod 350 yyvals;
private yyprod351 ((_, (YYTok yy1)):yyvs) =  do { yyr <- reduce351 yy1 ;YYM.pure (YYNTliteral yyr, yyvs)};
private yyprod351 yyvals = yybadprod 351 yyvals;
private yyprod352 ((_, (YYTok yy1)):yyvs) =  do { yyr <- reduce352 yy1 ;YYM.pure (YYNTliteral yyr, yyvs)};
private yyprod352 yyvals = yybadprod 352 yyvals;
private yyprod353 ((_, (YYTok yy1)):yyvs) =  do { yyr <- reduce353 yy1 ;YYM.pure (YYNTliteral yyr, yyvs)};
private yyprod353 yyvals = yybadprod 353 yyvals;
private yyprod354 ((_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce354 yy1}; YYM.pure (YYNTliteral yyr, yyvs)};
private yyprod354 yyvals = yybadprod 354 yyvals;
private yyprod355 ((_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce355 yy1}; YYM.pure (YYNTliteral yyr, yyvs)};
private yyprod355 yyvals = yybadprod 355 yyvals;
private yyprod356 ((_, (YYTok yy1)):yyvs) =  do { yyr <- reduce356 yy1 ;YYM.pure (YYNTliteral yyr, yyvs)};
private yyprod356 yyvals = yybadprod 356 yyvals;
private yyprod357 ((_, (YYTok yy1)):yyvs) =  do { yyr <- reduce357 yy1 ;YYM.pure (YYNTliteral yyr, yyvs)};
private yyprod357 yyvals = yybadprod 357 yyvals;
private yyprod358 ((_, (YYNTexpr yy1)):yyvs) = YYM.pure (YYNTpattern (yy1), yyvs);
private yyprod358 yyvals = yybadprod 358 yyvals;
private yyprod359 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTaeq (yy1), yyvs);
private yyprod359 yyvals = yybadprod 359 yyvals;
private yyprod360 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTaeq (yy1), yyvs);
private yyprod360 yyvals = yybadprod 360 yyvals;
private yyprod361 ((_, (YYNTgqual yy1)):yyvs) = YYM.pure (YYNTlcqual (yy1), yyvs);
private yyprod361 yyvals = yybadprod 361 yyvals;
private yyprod362 ((_, (YYNTexpr yy3)):(_, (YYTok yy2)):(_, (YYNTexpr yy1)):yyvs) =  do { yyr <- reduce362 yy1 yy2 yy3 ;YYM.pure (YYNTlcqual yyr, yyvs)};
private yyprod362 yyvals = yybadprod 362 yyvals;
private yyprod363 ((_, (YYTok yy4)):(_, (YYNTletdefs yy3)):(_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce363 yy1 yy2 yy3 yy4}; YYM.pure (YYNTlcqual yyr, yyvs)};
private yyprod363 yyvals = yybadprod 363 yyvals;
private yyprod364 ((_, (YYNTlcqual yy1)):yyvs) =  do { let {!yyr = reduce364 yy1}; YYM.pure (YYNTlcquals yyr, yyvs)};
private yyprod364 yyvals = yybadprod 364 yyvals;
private yyprod365 ((_, (YYNTlcquals yy3)):(_, (YYTok yy2)):(_, (YYNTlcqual yy1)):yyvs) =  do { let {!yyr = reduce365 yy1 yy2 yy3}; YYM.pure (YYNTlcquals yyr, yyvs)};
private yyprod365 yyvals = yybadprod 365 yyvals;
private yyprod366 ((_, (YYTok yy2)):(_, (YYNTlcqual yy1)):yyvs) =  do { let {!yyr = reduce366 yy1 yy2}; YYM.pure (YYNTlcquals yyr, yyvs)};
private yyprod366 yyvals = yybadprod 366 yyvals;
private yyprod367 ((_, (YYNTlcqual yy1)):yyvs) =  do { let {!yyr = reduce367 yy1}; YYM.pure (YYNTdodefs yyr, yyvs)};
private yyprod367 yyvals = yybadprod 367 yyvals;
private yyprod368 ((_, (YYTok yy2)):(_, (YYNTlcqual yy1)):yyvs) =  do { let {!yyr = reduce368 yy1 yy2}; YYM.pure (YYNTdodefs yyr, yyvs)};
private yyprod368 yyvals = yybadprod 368 yyvals;
private yyprod369 ((_, (YYNTdodefs yy3)):(_, (YYTok yy2)):(_, (YYNTlcqual yy1)):yyvs) =  do { let {!yyr = reduce369 yy1 yy2 yy3}; YYM.pure (YYNTdodefs yyr, yyvs)};
private yyprod369 yyvals = yybadprod 369 yyvals;
private yyprod370 ((_, (YYNTexpr yy1)):yyvs) =  do { let {!yyr = reduce370 yy1}; YYM.pure (YYNTgqual yyr, yyvs)};
private yyprod370 yyvals = yybadprod 370 yyvals;
private yyprod371 ((_, (YYNTexpr yy3)):(_, (YYTok yy2)):(_, (YYNTexpr yy1)):yyvs) =  do { let {!yyr = reduce371 yy1 yy2 yy3}; YYM.pure (YYNTgqual yyr, yyvs)};
private yyprod371 yyvals = yybadprod 371 yyvals;
private yyprod372 ((_, (YYNTgqual yy1)):yyvs) =  do { let {!yyr = reduce372 yy1}; YYM.pure (YYNTgquals yyr, yyvs)};
private yyprod372 yyvals = yybadprod 372 yyvals;
private yyprod373 ((_, (YYNTgquals yy3)):(_, (YYTok yy2)):(_, (YYNTgqual yy1)):yyvs) =  do { let {!yyr = reduce373 yy1 yy2 yy3}; YYM.pure (YYNTgquals yyr, yyvs)};
private yyprod373 yyvals = yybadprod 373 yyvals;
private yyprod374 ((_, (YYTok yy2)):(_, (YYNTgqual yy1)):yyvs) =  do { let {!yyr = reduce374 yy1 yy2}; YYM.pure (YYNTgquals yyr, yyvs)};
private yyprod374 yyvals = yybadprod 374 yyvals;
private yyprod375 ((_, (YYNTexpr yy4)):(_, (YYNTaeq yy3)):(_, (YYNTgquals yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce375 yy1 yy2 yy3 yy4}; YYM.pure (YYNTguard yyr, yyvs)};
private yyprod375 yyvals = yybadprod 375 yyvals;
private yyprod376 ((_, (YYNTguard yy1)):yyvs) =  do { let {!yyr = reduce376 yy1}; YYM.pure (YYNTguards yyr, yyvs)};
private yyprod376 yyvals = yybadprod 376 yyvals;
private yyprod377 ((_, (YYNTguards yy2)):(_, (YYNTguard yy1)):yyvs) =  do { let {!yyr = reduce377 yy1 yy2}; YYM.pure (YYNTguards yyr, yyvs)};
private yyprod377 yyvals = yybadprod 377 yyvals;
private yyprod378 ((_, (YYNTexpr yy3)):(_, (YYNTaeq yy2)):(_, (YYNTpattern yy1)):yyvs) =  do { let {!yyr = reduce378 yy1 yy2 yy3}; YYM.pure (YYNTcalt yyr, yyvs)};
private yyprod378 yyvals = yybadprod 378 yyvals;
private yyprod379 ((_, (YYNTguards yy2)):(_, (YYNTpattern yy1)):yyvs) =  do { let {!yyr = reduce379 yy1 yy2}; YYM.pure (YYNTcalt yyr, yyvs)};
private yyprod379 yyvals = yybadprod 379 yyvals;
private yyprod380 ((_, (YYNTwherelet yy2)):(_, (YYNTcalt yy1)):yyvs) =  do { let {!yyr = reduce380 yy1 yy2}; YYM.pure (YYNTcalt yyr, yyvs)};
private yyprod380 yyvals = yybadprod 380 yyvals;
private yyprod381 ((_, (YYNTcalt yy1)):yyvs) =  do { let {!yyr = reduce381 yy1}; YYM.pure (YYNTcalts yyr, yyvs)};
private yyprod381 yyvals = yybadprod 381 yyvals;
private yyprod382 ((_, (YYNTcalts yy3)):(_, (YYTok yy2)):(_, (YYNTcalt yy1)):yyvs) =  do { let {!yyr = reduce382 yy1 yy2 yy3}; YYM.pure (YYNTcalts yyr, yyvs)};
private yyprod382 yyvals = yybadprod 382 yyvals;
private yyprod383 ((_, (YYTok yy2)):(_, (YYNTcalt yy1)):yyvs) =  do { let {!yyr = reduce383 yy1 yy2}; YYM.pure (YYNTcalts yyr, yyvs)};
private yyprod383 yyvals = yybadprod 383 yyvals;
private yyprod384 ((_, (YYNTlambdabody yy3)):(_, (YYNTapats yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce384 yy1 yy2 yy3}; YYM.pure (YYNTlambda yyr, yyvs)};
private yyprod384 yyvals = yybadprod 384 yyvals;
private yyprod385 ((_, (YYNTlambda yy1)):yyvs) = YYM.pure (YYNTlambdabody (yy1), yyvs);
private yyprod385 yyvals = yybadprod 385 yyvals;
private yyprod386 ((_, (YYNTexpr yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce386 yy1 yy2}; YYM.pure (YYNTlambdabody yyr, yyvs)};
private yyprod386 yyvals = yybadprod 386 yyvals;
private yyprod387 ((_, (YYNTsigma yy3)):(_, (YYTok yy2)):(_, (YYNTbinex yy1)):yyvs) =  do { let {!yyr = reduce387 yy1 yy2 yy3}; YYM.pure (YYNTexpr yyr, yyvs)};
private yyprod387 yyvals = yybadprod 387 yyvals;
private yyprod388 ((_, (YYNTbinex yy1)):yyvs) = YYM.pure (YYNTexpr (yy1), yyvs);
private yyprod388 yyvals = yybadprod 388 yyvals;
private yyprod389 ((_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce389 yy1 yy2}; YYM.pure (YYNTthenx yyr, yyvs)};
private yyprod389 yyvals = yybadprod 389 yyvals;
private yyprod390 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTthenx (yy1), yyvs);
private yyprod390 yyvals = yybadprod 390 yyvals;
private yyprod391 ((_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce391 yy1 yy2}; YYM.pure (YYNTelsex yyr, yyvs)};
private yyprod391 yyvals = yybadprod 391 yyvals;
private yyprod392 ((_, (YYTok yy1)):yyvs) = YYM.pure (YYNTelsex (yy1), yyvs);
private yyprod392 yyvals = yybadprod 392 yyvals;
private yyprod393 ((_, (YYNTbinex yy3)):(_, (YYTok yy2)):(_, (YYNTbinex yy1)):yyvs) =  do { let {!yyr = reduce393 yy1 yy2 yy3}; YYM.pure (YYNTbinex yyr, yyvs)};
private yyprod393 ((_, (YYNTbinex yy1)):yyvs) = YYM.pure (YYNTbinex (yy1), yyvs);
private yyprod393 yyvals = yybadprod 393 yyvals;
private yyprod394 ((_, (YYNTbinex yy3)):(_, (YYTok yy2)):(_, (YYNTbinex yy1)):yyvs) =  do { let {!yyr = reduce394 yy1 yy2 yy3}; YYM.pure (YYNTbinex yyr, yyvs)};
private yyprod394 ((_, (YYNTbinex yy1)):yyvs) = YYM.pure (YYNTbinex (yy1), yyvs);
private yyprod394 yyvals = yybadprod 394 yyvals;
private yyprod395 ((_, (YYNTtopex yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce395 yy1 yy2}; YYM.pure (YYNTbinex yyr, yyvs)};
private yyprod395 yyvals = yybadprod 395 yyvals;
private yyprod396 ((_, (YYNTtopex yy1)):yyvs) = YYM.pure (YYNTbinex (yy1), yyvs);
private yyprod396 yyvals = yybadprod 396 yyvals;
private yyprod397 ((_, (YYNTexpr yy6)):(_, (YYNTelsex yy5)):(_, (YYNTexpr yy4)):(_, (YYNTthenx yy3)):(_, (YYNTexpr yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce397 yy1 yy2 yy3 yy4 yy5 yy6}; YYM.pure (YYNTtopex yyr, yyvs)};
private yyprod397 yyvals = yybadprod 397 yyvals;
private yyprod398 ((_, (YYTok yy6)):(_, (YYNTcalts yy5)):(_, (YYTok yy4)):(_, (YYTok yy3)):(_, (YYNTexpr yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce398 yy1 yy2 yy3 yy4 yy5 yy6}; YYM.pure (YYNTtopex yyr, yyvs)};
private yyprod398 yyvals = yybadprod 398 yyvals;
private yyprod399 ((_, (YYNTexpr yy6)):(_, (YYTok yy5)):(_, (YYTok yy4)):(_, (YYNTletdefs yy3)):(_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce399 yy1 yy2 yy3 yy4 yy5 yy6}; YYM.pure (YYNTtopex yyr, yyvs)};
private yyprod399 yyvals = yybadprod 399 yyvals;
private yyprod400 ((_, (YYNTlambda yy1)):yyvs) = YYM.pure (YYNTtopex (yy1), yyvs);
private yyprod400 yyvals = yybadprod 400 yyvals;
private yyprod401 ((_, (YYNTappex yy1)):yyvs) =  do { let {!yyr = reduce401 yy1}; YYM.pure (YYNTtopex yyr, yyvs)};
private yyprod401 yyvals = yybadprod 401 yyvals;
private yyprod402 ((_, (YYNTunex yy1)):yyvs) = YYM.pure (YYNTappex (yy1), yyvs);
private yyprod402 yyvals = yybadprod 402 yyvals;
private yyprod403 ((_, (YYNTunex yy2)):(_, (YYNTappex yy1)):yyvs) =  do { let {!yyr = reduce403 yy1 yy2}; YYM.pure (YYNTappex yyr, yyvs)};
private yyprod403 yyvals = yybadprod 403 yyvals;
private yyprod404 ((_, (YYNTprimary yy1)):yyvs) = YYM.pure (YYNTunex (yy1), yyvs);
private yyprod404 yyvals = yybadprod 404 yyvals;
private yyprod405 ((_, (YYNTunex yy2)):(_, (YYNTunop yy1)):yyvs) =  do { let {!yyr = reduce405 yy1 yy2}; YYM.pure (YYNTunex yyr, yyvs)};
private yyprod405 yyvals = yybadprod 405 yyvals;
private yyprod406 ((_, (YYNTunex yy1)):yyvs) =  do { let {!yyr = reduce406 yy1}; YYM.pure (YYNTapats yyr, yyvs)};
private yyprod406 yyvals = yybadprod 406 yyvals;
private yyprod407 ((_, (YYNTapats yy2)):(_, (YYNTunex yy1)):yyvs) =  do { let {!yyr = reduce407 yy1 yy2}; YYM.pure (YYNTapats yyr, yyvs)};
private yyprod407 yyvals = yybadprod 407 yyvals;
private yyprod408 ((_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce408 yy1}; YYM.pure (YYNTqualifiers yyr, yyvs)};
private yyprod408 yyvals = yybadprod 408 yyvals;
private yyprod409 ((_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce409 yy1 yy2}; YYM.pure (YYNTqualifiers yyr, yyvs)};
private yyprod409 yyvals = yybadprod 409 yyvals;
private yyprod410 ((_, (YYNTterm yy1)):yyvs) = YYM.pure (YYNTprimary (yy1), yyvs);
private yyprod410 yyvals = yybadprod 410 yyvals;
private yyprod411 ((_, (YYTok yy4)):(_, (YYNTdodefs yy3)):(_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { yyr <- reduce411 yy1 yy2 yy3 yy4 ;YYM.pure (YYNTprimary yyr, yyvs)};
private yyprod411 yyvals = yybadprod 411 yyvals;
private yyprod412 ((_, (YYTok yy3)):(_, (YYTok yy2)):(_, (YYNTprimary yy1)):yyvs) =  do { let {!yyr = reduce412 yy1 yy2 yy3}; YYM.pure (YYNTprimary yyr, yyvs)};
private yyprod412 yyvals = yybadprod 412 yyvals;
private yyprod413 ((_, (YYNToperator yy3)):(_, (YYTok yy2)):(_, (YYNTprimary yy1)):yyvs) =  do { yyr <- reduce413 yy1 yy2 yy3 ;YYM.pure (YYNTprimary yyr, yyvs)};
private yyprod413 yyvals = yybadprod 413 yyvals;
private yyprod414 ((_, (YYNTunop yy3)):(_, (YYTok yy2)):(_, (YYNTprimary yy1)):yyvs) =  do { let {!yyr = reduce414 yy1 yy2 yy3}; YYM.pure (YYNTprimary yyr, yyvs)};
private yyprod414 yyvals = yybadprod 414 yyvals;
private yyprod415 ((_, (YYTok yy5)):(_, (YYTok yy4)):(_, (YYTok yy3)):(_, (YYTok yy2)):(_, (YYNTqualifiers yy1)):yyvs) =  do { let {!yyr = reduce415 yy1 yy2 yy3 yy4 yy5}; YYM.pure (YYNTprimary yyr, yyvs)};
private yyprod415 yyvals = yybadprod 415 yyvals;
private yyprod416 ((_, (YYTok yy5)):(_, (YYTok yy4)):(_, (YYTok yy3)):(_, (YYTok yy2)):(_, (YYNTqualifiers yy1)):yyvs) =  do { let {!yyr = reduce416 yy1 yy2 yy3 yy4 yy5}; YYM.pure (YYNTprimary yyr, yyvs)};
private yyprod416 yyvals = yybadprod 416 yyvals;
private yyprod417 ((_, (YYTok yy5)):(_, (YYTok yy4)):(_, (YYTok yy3)):(_, (YYTok yy2)):(_, (YYNTqualifiers yy1)):yyvs) =  do { let {!yyr = reduce417 yy1 yy2 yy3 yy4 yy5}; YYM.pure (YYNTprimary yyr, yyvs)};
private yyprod417 yyvals = yybadprod 417 yyvals;
private yyprod418 ((_, (YYTok yy4)):(_, (YYNTgetfields yy3)):(_, (YYTok yy2)):(_, (YYNTqualifiers yy1)):yyvs) =  do { let {!yyr = reduce418 yy1 yy2 yy3 yy4}; YYM.pure (YYNTprimary yyr, yyvs)};
private yyprod418 yyvals = yybadprod 418 yyvals;
private yyprod419 ((_, (YYTok yy6)):(_, (YYTok yy5)):(_, (YYTok yy4)):(_, (YYTok yy3)):(_, (YYTok yy2)):(_, (YYNTprimary yy1)):yyvs) =  do { let {!yyr = reduce419 yy1 yy2 yy3 yy4 yy5 yy6}; YYM.pure (YYNTprimary yyr, yyvs)};
private yyprod419 yyvals = yybadprod 419 yyvals;
private yyprod420 ((_, (YYTok yy6)):(_, (YYTok yy5)):(_, (YYTok yy4)):(_, (YYTok yy3)):(_, (YYTok yy2)):(_, (YYNTprimary yy1)):yyvs) =  do { let {!yyr = reduce420 yy1 yy2 yy3 yy4 yy5 yy6}; YYM.pure (YYNTprimary yyr, yyvs)};
private yyprod420 yyvals = yybadprod 420 yyvals;
private yyprod421 ((_, (YYTok yy6)):(_, (YYTok yy5)):(_, (YYTok yy4)):(_, (YYTok yy3)):(_, (YYTok yy2)):(_, (YYNTprimary yy1)):yyvs) =  do { let {!yyr = reduce421 yy1 yy2 yy3 yy4 yy5 yy6}; YYM.pure (YYNTprimary yyr, yyvs)};
private yyprod421 yyvals = yybadprod 421 yyvals;
private yyprod422 ((_, (YYTok yy5)):(_, (YYNTgetfields yy4)):(_, (YYTok yy3)):(_, (YYTok yy2)):(_, (YYNTprimary yy1)):yyvs) =  do { let {!yyr = reduce422 yy1 yy2 yy3 yy4 yy5}; YYM.pure (YYNTprimary yyr, yyvs)};
private yyprod422 yyvals = yybadprod 422 yyvals;
private yyprod423 ((_, (YYTok yy5)):(_, (YYNTexpr yy4)):(_, (YYTok yy3)):(_, (YYTok yy2)):(_, (YYNTprimary yy1)):yyvs) =  do { let {!yyr = reduce423 yy1 yy2 yy3 yy4 yy5}; YYM.pure (YYNTprimary yyr, yyvs)};
private yyprod423 yyvals = yybadprod 423 yyvals;
private yyprod424 ((_, (YYNTqvarid yy1)):yyvs) =  do { let {!yyr = reduce424 yy1}; YYM.pure (YYNTterm yyr, yyvs)};
private yyprod424 yyvals = yybadprod 424 yyvals;
private yyprod425 ((_, (YYNTliteral yy1)):yyvs) = YYM.pure (YYNTterm (yy1), yyvs);
private yyprod425 yyvals = yybadprod 425 yyvals;
private yyprod426 ((_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce426 yy1}; YYM.pure (YYNTterm yyr, yyvs)};
private yyprod426 yyvals = yybadprod 426 yyvals;
private yyprod427 ((_, (YYNTqconid yy1)):yyvs) =  do { let {!yyr = reduce427 yy1}; YYM.pure (YYNTterm yyr, yyvs)};
private yyprod427 yyvals = yybadprod 427 yyvals;
private yyprod428 ((_, (YYTok yy3)):(_, (YYTok yy2)):(_, (YYNTqconid yy1)):yyvs) =  do { let {!yyr = reduce428 yy1 yy2 yy3}; YYM.pure (YYNTterm yyr, yyvs)};
private yyprod428 yyvals = yybadprod 428 yyvals;
private yyprod429 ((_, (YYTok yy4)):(_, (YYNTfields yy3)):(_, (YYTok yy2)):(_, (YYNTqconid yy1)):yyvs) =  do { let {!yyr = reduce429 yy1 yy2 yy3 yy4}; YYM.pure (YYNTterm yyr, yyvs)};
private yyprod429 yyvals = yybadprod 429 yyvals;
private yyprod430 ((_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce430 yy1 yy2}; YYM.pure (YYNTterm yyr, yyvs)};
private yyprod430 yyvals = yybadprod 430 yyvals;
private yyprod431 ((_, (YYTok yy3)):(_, (YYNTcommata yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce431 yy1 yy2 yy3}; YYM.pure (YYNTterm yyr, yyvs)};
private yyprod431 yyvals = yybadprod 431 yyvals;
private yyprod432 ((_, (YYTok yy3)):(_, (YYNTunop yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce432 yy1 yy2 yy3}; YYM.pure (YYNTterm yyr, yyvs)};
private yyprod432 yyvals = yybadprod 432 yyvals;
private yyprod433 ((_, (YYTok yy3)):(_, (YYNToperator yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce433 yy1 yy2 yy3}; YYM.pure (YYNTterm yyr, yyvs)};
private yyprod433 yyvals = yybadprod 433 yyvals;
private yyprod434 ((_, (YYTok yy3)):(_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce434 yy1 yy2 yy3}; YYM.pure (YYNTterm yyr, yyvs)};
private yyprod434 yyvals = yybadprod 434 yyvals;
private yyprod435 ((_, (YYTok yy4)):(_, (YYNTexpr yy3)):(_, (YYNToperator yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce435 yy1 yy2 yy3 yy4}; YYM.pure (YYNTterm yyr, yyvs)};
private yyprod435 yyvals = yybadprod 435 yyvals;
private yyprod436 ((_, (YYTok yy4)):(_, (YYNToperator yy3)):(_, (YYNTbinex yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce436 yy1 yy2 yy3 yy4}; YYM.pure (YYNTterm yyr, yyvs)};
private yyprod436 yyvals = yybadprod 436 yyvals;
private yyprod437 ((_, (YYTok yy4)):(_, (YYTok yy3)):(_, (YYNTbinex yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce437 yy1 yy2 yy3 yy4}; YYM.pure (YYNTterm yyr, yyvs)};
private yyprod437 yyvals = yybadprod 437 yyvals;
private yyprod438 ((_, (YYTok yy5)):(_, (YYNTexprSC yy4)):(_, (YYTok yy3)):(_, (YYNTexpr yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce438 yy1 yy2 yy3 yy4 yy5}; YYM.pure (YYNTterm yyr, yyvs)};
private yyprod438 yyvals = yybadprod 438 yyvals;
private yyprod439 ((_, (YYTok yy5)):(_, (YYNTexprSS yy4)):(_, (YYTok yy3)):(_, (YYNTexpr yy2)):(_, (YYTok yy1)):yyvs) =  do { yyr <- reduce439 yy1 yy2 yy3 yy4 yy5 ;YYM.pure (YYNTterm yyr, yyvs)};
private yyprod439 yyvals = yybadprod 439 yyvals;
private yyprod440 ((_, (YYTok yy3)):(_, (YYNTexpr yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce440 yy1 yy2 yy3}; YYM.pure (YYNTterm yyr, yyvs)};
private yyprod440 yyvals = yybadprod 440 yyvals;
private yyprod441 ((_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce441 yy1 yy2}; YYM.pure (YYNTterm yyr, yyvs)};
private yyprod441 yyvals = yybadprod 441 yyvals;
private yyprod442 ((_, (YYTok yy3)):(_, (YYNTexprSC yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce442 yy1 yy2 yy3}; YYM.pure (YYNTterm yyr, yyvs)};
private yyprod442 yyvals = yybadprod 442 yyvals;
private yyprod443 ((_, (YYTok yy4)):(_, (YYTok yy3)):(_, (YYNTexprSC yy2)):(_, (YYTok yy1)):yyvs) =  do { yyr <- reduce443 yy1 yy2 yy3 yy4 ;YYM.pure (YYNTterm yyr, yyvs)};
private yyprod443 yyvals = yybadprod 443 yyvals;
private yyprod444 ((_, (YYTok yy5)):(_, (YYNTexpr yy4)):(_, (YYTok yy3)):(_, (YYNTexprSC yy2)):(_, (YYTok yy1)):yyvs) =  do { yyr <- reduce444 yy1 yy2 yy3 yy4 yy5 ;YYM.pure (YYNTterm yyr, yyvs)};
private yyprod444 yyvals = yybadprod 444 yyvals;
private yyprod445 ((_, (YYTok yy5)):(_, (YYNTlcquals yy4)):(_, (YYTok yy3)):(_, (YYNTexpr yy2)):(_, (YYTok yy1)):yyvs) =  do { yyr <- reduce445 yy1 yy2 yy3 yy4 yy5 ;YYM.pure (YYNTterm yyr, yyvs)};
private yyprod445 yyvals = yybadprod 445 yyvals;
private yyprod446 ((_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce446 yy1}; YYM.pure (YYNTcommata yyr, yyvs)};
private yyprod446 yyvals = yybadprod 446 yyvals;
private yyprod447 ((_, (YYNTcommata yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce447 yy1 yy2}; YYM.pure (YYNTcommata yyr, yyvs)};
private yyprod447 yyvals = yybadprod 447 yyvals;
private yyprod448 ((_, (YYNTfield yy1)):yyvs) =  do { let {!yyr = reduce448 yy1}; YYM.pure (YYNTfields yyr, yyvs)};
private yyprod448 yyvals = yybadprod 448 yyvals;
private yyprod449 ((_, (YYNTfields yy3)):(_, (YYTok yy2)):(_, (YYNTfield yy1)):yyvs) =  do { yyr <- reduce449 yy1 yy2 yy3 ;YYM.pure (YYNTfields yyr, yyvs)};
private yyprod449 yyvals = yybadprod 449 yyvals;
private yyprod450 ((_, (YYTok yy2)):(_, (YYNTfield yy1)):yyvs) =  do { let {!yyr = reduce450 yy1 yy2}; YYM.pure (YYNTfields yyr, yyvs)};
private yyprod450 yyvals = yybadprod 450 yyvals;
private yyprod451 ((_, (YYNTgetfield yy1)):yyvs) =  do { let {!yyr = reduce451 yy1}; YYM.pure (YYNTgetfields yyr, yyvs)};
private yyprod451 yyvals = yybadprod 451 yyvals;
private yyprod452 ((_, (YYNTgetfields yy3)):(_, (YYTok yy2)):(_, (YYNTgetfield yy1)):yyvs) =  do { let {!yyr = reduce452 yy1 yy2 yy3}; YYM.pure (YYNTgetfields yyr, yyvs)};
private yyprod452 yyvals = yybadprod 452 yyvals;
private yyprod453 ((_, (YYTok yy2)):(_, (YYNTgetfield yy1)):yyvs) =  do { let {!yyr = reduce453 yy1 yy2}; YYM.pure (YYNTgetfields yyr, yyvs)};
private yyprod453 yyvals = yybadprod 453 yyvals;
private yyprod454 ((_, (YYNTexpr yy3)):(_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce454 yy1 yy2 yy3}; YYM.pure (YYNTgetfield yyr, yyvs)};
private yyprod454 yyvals = yybadprod 454 yyvals;
private yyprod455 ((_, (YYNTexpr yy3)):(_, (YYTok yy2)):(_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce455 yy1 yy2 yy3}; YYM.pure (YYNTgetfield yyr, yyvs)};
private yyprod455 yyvals = yybadprod 455 yyvals;
private yyprod456 ((_, (YYTok yy1)):yyvs) =  do { let {!yyr = reduce456 yy1}; YYM.pure (YYNTgetfield yyr, yyvs)};
private yyprod456 yyvals = yybadprod 456 yyvals;
private yyprod457 ((_, (YYNTexpr yy3)):(_, (YYTok yy2)):(_, (YYNTvarid yy1)):yyvs) =  do { let {!yyr = reduce457 yy1 yy2 yy3}; YYM.pure (YYNTfield yyr, yyvs)};
private yyprod457 yyvals = yybadprod 457 yyvals;
private yyprod458 ((_, (YYNTvarid yy1)):yyvs) =  do { let {!yyr = reduce458 yy1}; YYM.pure (YYNTfield yyr, yyvs)};
private yyprod458 yyvals = yybadprod 458 yyvals;
private yyprod459 ((_, (YYNTexpr yy1)):yyvs) =  do { let {!yyr = reduce459 yy1}; YYM.pure (YYNTexprSC yyr, yyvs)};
private yyprod459 yyvals = yybadprod 459 yyvals;
private yyprod460 ((_, (YYNTexprSC yy3)):(_, (YYTok yy2)):(_, (YYNTexpr yy1)):yyvs) =  do { let {!yyr = reduce460 yy1 yy2 yy3}; YYM.pure (YYNTexprSC yyr, yyvs)};
private yyprod460 yyvals = yybadprod 460 yyvals;
private yyprod461 ((_, (YYTok yy2)):(_, (YYNTexpr yy1)):yyvs) =  do { let {!yyr = reduce461 yy1 yy2}; YYM.pure (YYNTexprSC yyr, yyvs)};
private yyprod461 yyvals = yybadprod 461 yyvals;
private yyprod462 ((_, (YYNTexpr yy1)):yyvs) =  do { let {!yyr = reduce462 yy1}; YYM.pure (YYNTexprSS yyr, yyvs)};
private yyprod462 yyvals = yybadprod 462 yyvals;
private yyprod463 ((_, (YYNTexprSS yy3)):(_, (YYTok yy2)):(_, (YYNTexpr yy1)):yyvs) =  do { let {!yyr = reduce463 yy1 yy2 yy3}; YYM.pure (YYNTexprSS yyr, yyvs)};
private yyprod463 yyvals = yybadprod 463 yyvals;
private yyprod464 ((_, (YYTok yy2)):(_, (YYNTexpr yy1)):yyvs) =  do { let {!yyr = reduce464 yy1 yy2}; YYM.pure (YYNTexprSS yyr, yyvs)};
private yyprod464 yyvals = yybadprod 464 yyvals;


private yyprods = let 
    sub1 = [      (1, yyprod1),
      (2, yyprod2),
      (3, yyprod3),
      (4, yyprod4),
      (5, yyprod5),
      (6, yyprod6),
      (7, yyprod7),
      (8, yyprod8),
      (9, yyprod9),
      (10, yyprod10),
      (11, yyprod11),
      (12, yyprod12),
      (13, yyprod13),
      (14, yyprod14),
      (15, yyprod15),
      (16, yyprod16),
      (17, yyprod17),
      (18, yyprod18),
      (19, yyprod19),
      (20, yyprod20),
      (21, yyprod21),
      (22, yyprod22),
      (23, yyprod23),
      (24, yyprod24),
      (25, yyprod25),
      (26, yyprod26),
      (27, yyprod27),
      (28, yyprod28),
      (29, yyprod29),
      (30, yyprod30),
      (31, yyprod31),
      (32, yyprod32),
      (33, yyprod33),
      (34, yyprod34),
      (35, yyprod35),
      (36, yyprod36),
      (37, yyprod37),
      (38, yyprod38),
      (39, yyprod39),
      (40, yyprod40),
      (41, yyprod41),
      (42, yyprod42),
      (43, yyprod43),
      (44, yyprod44),
      (45, yyprod45),
      (46, yyprod46),
      (47, yyprod47),
      (48, yyprod48),
      (49, yyprod49),
      (50, yyprod50),
      (51, yyprod51),
      (52, yyprod52),
      (53, yyprod53),
      (54, yyprod54),
      (55, yyprod55),
      (56, yyprod56),
      (57, yyprod57),
      (58, yyprod58),
      (59, yyprod59),
      (60, yyprod60),
      (61, yyprod61),
      (62, yyprod62),
      (63, yyprod63),
      (64, yyprod64)];
    sub2 = [      (65, yyprod65),
      (66, yyprod66),
      (67, yyprod67),
      (68, yyprod68),
      (69, yyprod69),
      (70, yyprod70),
      (71, yyprod71),
      (72, yyprod72),
      (73, yyprod73),
      (74, yyprod74),
      (75, yyprod75),
      (76, yyprod76),
      (77, yyprod77),
      (78, yyprod78),
      (79, yyprod79),
      (80, yyprod80),
      (81, yyprod81),
      (82, yyprod82),
      (83, yyprod83),
      (84, yyprod84),
      (85, yyprod85),
      (86, yyprod86),
      (87, yyprod87),
      (88, yyprod88),
      (89, yyprod89),
      (90, yyprod90),
      (91, yyprod91),
      (92, yyprod92),
      (93, yyprod93),
      (94, yyprod94),
      (95, yyprod95),
      (96, yyprod96),
      (97, yyprod97),
      (98, yyprod98),
      (99, yyprod99),
      (100, yyprod100),
      (101, yyprod101),
      (102, yyprod102),
      (103, yyprod103),
      (104, yyprod104),
      (105, yyprod105),
      (106, yyprod106),
      (107, yyprod107),
      (108, yyprod108),
      (109, yyprod109),
      (110, yyprod110),
      (111, yyprod111),
      (112, yyprod112),
      (113, yyprod113),
      (114, yyprod114),
      (115, yyprod115),
      (116, yyprod116),
      (117, yyprod117),
      (118, yyprod118),
      (119, yyprod119),
      (120, yyprod120),
      (121, yyprod121),
      (122, yyprod122),
      (123, yyprod123),
      (124, yyprod124),
      (125, yyprod125),
      (126, yyprod126),
      (127, yyprod127),
      (128, yyprod128)];
    sub3 = [      (129, yyprod129),
      (130, yyprod130),
      (131, yyprod131),
      (132, yyprod132),
      (133, yyprod133),
      (134, yyprod134),
      (135, yyprod135),
      (136, yyprod136),
      (137, yyprod137),
      (138, yyprod138),
      (139, yyprod139),
      (140, yyprod140),
      (141, yyprod141),
      (142, yyprod142),
      (143, yyprod143),
      (144, yyprod144),
      (145, yyprod145),
      (146, yyprod146),
      (147, yyprod147),
      (148, yyprod148),
      (149, yyprod149),
      (150, yyprod150),
      (151, yyprod151),
      (152, yyprod152),
      (153, yyprod153),
      (154, yyprod154),
      (155, yyprod155),
      (156, yyprod156),
      (157, yyprod157),
      (158, yyprod158),
      (159, yyprod159),
      (160, yyprod160),
      (161, yyprod161),
      (162, yyprod162),
      (163, yyprod163),
      (164, yyprod164),
      (165, yyprod165),
      (166, yyprod166),
      (167, yyprod167),
      (168, yyprod168),
      (169, yyprod169),
      (170, yyprod170),
      (171, yyprod171),
      (172, yyprod172),
      (173, yyprod173),
      (174, yyprod174),
      (175, yyprod175),
      (176, yyprod176),
      (177, yyprod177),
      (178, yyprod178),
      (179, yyprod179),
      (180, yyprod180),
      (181, yyprod181),
      (182, yyprod182),
      (183, yyprod183),
      (184, yyprod184),
      (185, yyprod185),
      (186, yyprod186),
      (187, yyprod187),
      (188, yyprod188),
      (189, yyprod189),
      (190, yyprod190),
      (191, yyprod191),
      (192, yyprod192)];
    sub4 = [      (193, yyprod193),
      (194, yyprod194),
      (195, yyprod195),
      (196, yyprod196),
      (197, yyprod197),
      (198, yyprod198),
      (199, yyprod199),
      (200, yyprod200),
      (201, yyprod201),
      (202, yyprod202),
      (203, yyprod203),
      (204, yyprod204),
      (205, yyprod205),
      (206, yyprod206),
      (207, yyprod207),
      (208, yyprod208),
      (209, yyprod209),
      (210, yyprod210),
      (211, yyprod211),
      (212, yyprod212),
      (213, yyprod213),
      (214, yyprod214),
      (215, yyprod215),
      (216, yyprod216),
      (217, yyprod217),
      (218, yyprod218),
      (219, yyprod219),
      (220, yyprod220),
      (221, yyprod221),
      (222, yyprod222),
      (223, yyprod223),
      (224, yyprod224),
      (225, yyprod225),
      (226, yyprod226),
      (227, yyprod227),
      (228, yyprod228),
      (229, yyprod229),
      (230, yyprod230),
      (231, yyprod231),
      (232, yyprod232),
      (233, yyprod233),
      (234, yyprod234),
      (235, yyprod235),
      (236, yyprod236),
      (237, yyprod237),
      (238, yyprod238),
      (239, yyprod239),
      (240, yyprod240),
      (241, yyprod241),
      (242, yyprod242),
      (243, yyprod243),
      (244, yyprod244),
      (245, yyprod245),
      (246, yyprod246),
      (247, yyprod247),
      (248, yyprod248),
      (249, yyprod249),
      (250, yyprod250),
      (251, yyprod251),
      (252, yyprod252),
      (253, yyprod253),
      (254, yyprod254),
      (255, yyprod255),
      (256, yyprod256)];
    sub5 = [      (257, yyprod257),
      (258, yyprod258),
      (259, yyprod259),
      (260, yyprod260),
      (261, yyprod261),
      (262, yyprod262),
      (263, yyprod263),
      (264, yyprod264),
      (265, yyprod265),
      (266, yyprod266),
      (267, yyprod267),
      (268, yyprod268),
      (269, yyprod269),
      (270, yyprod270),
      (271, yyprod271),
      (272, yyprod272),
      (273, yyprod273),
      (274, yyprod274),
      (275, yyprod275),
      (276, yyprod276),
      (277, yyprod277),
      (278, yyprod278),
      (279, yyprod279),
      (280, yyprod280),
      (281, yyprod281),
      (282, yyprod282),
      (283, yyprod283),
      (284, yyprod284),
      (285, yyprod285),
      (286, yyprod286),
      (287, yyprod287),
      (288, yyprod288),
      (289, yyprod289),
      (290, yyprod290),
      (291, yyprod291),
      (292, yyprod292),
      (293, yyprod293),
      (294, yyprod294),
      (295, yyprod295),
      (296, yyprod296),
      (297, yyprod297),
      (298, yyprod298),
      (299, yyprod299),
      (300, yyprod300),
      (301, yyprod301),
      (302, yyprod302),
      (303, yyprod303),
      (304, yyprod304),
      (305, yyprod305),
      (306, yyprod306),
      (307, yyprod307),
      (308, yyprod308),
      (309, yyprod309),
      (310, yyprod310),
      (311, yyprod311),
      (312, yyprod312),
      (313, yyprod313),
      (314, yyprod314),
      (315, yyprod315),
      (316, yyprod316),
      (317, yyprod317),
      (318, yyprod318),
      (319, yyprod319),
      (320, yyprod320)];
    sub6 = [      (321, yyprod321),
      (322, yyprod322),
      (323, yyprod323),
      (324, yyprod324),
      (325, yyprod325),
      (326, yyprod326),
      (327, yyprod327),
      (328, yyprod328),
      (329, yyprod329),
      (330, yyprod330),
      (331, yyprod331),
      (332, yyprod332),
      (333, yyprod333),
      (334, yyprod334),
      (335, yyprod335),
      (336, yyprod336),
      (337, yyprod337),
      (338, yyprod338),
      (339, yyprod339),
      (340, yyprod340),
      (341, yyprod341),
      (342, yyprod342),
      (343, yyprod343),
      (344, yyprod344),
      (345, yyprod345),
      (346, yyprod346),
      (347, yyprod347),
      (348, yyprod348),
      (349, yyprod349),
      (350, yyprod350),
      (351, yyprod351),
      (352, yyprod352),
      (353, yyprod353),
      (354, yyprod354),
      (355, yyprod355),
      (356, yyprod356),
      (357, yyprod357),
      (358, yyprod358),
      (359, yyprod359),
      (360, yyprod360),
      (361, yyprod361),
      (362, yyprod362),
      (363, yyprod363),
      (364, yyprod364),
      (365, yyprod365),
      (366, yyprod366),
      (367, yyprod367),
      (368, yyprod368),
      (369, yyprod369),
      (370, yyprod370),
      (371, yyprod371),
      (372, yyprod372),
      (373, yyprod373),
      (374, yyprod374),
      (375, yyprod375),
      (376, yyprod376),
      (377, yyprod377),
      (378, yyprod378),
      (379, yyprod379),
      (380, yyprod380),
      (381, yyprod381),
      (382, yyprod382),
      (383, yyprod383),
      (384, yyprod384)];
    sub7 = [      (385, yyprod385),
      (386, yyprod386),
      (387, yyprod387),
      (388, yyprod388),
      (389, yyprod389),
      (390, yyprod390),
      (391, yyprod391),
      (392, yyprod392),
      (393, yyprod393),
      (394, yyprod394),
      (395, yyprod395),
      (396, yyprod396),
      (397, yyprod397),
      (398, yyprod398),
      (399, yyprod399),
      (400, yyprod400),
      (401, yyprod401),
      (402, yyprod402),
      (403, yyprod403),
      (404, yyprod404),
      (405, yyprod405),
      (406, yyprod406),
      (407, yyprod407),
      (408, yyprod408),
      (409, yyprod409),
      (410, yyprod410),
      (411, yyprod411),
      (412, yyprod412),
      (413, yyprod413),
      (414, yyprod414),
      (415, yyprod415),
      (416, yyprod416),
      (417, yyprod417),
      (418, yyprod418),
      (419, yyprod419),
      (420, yyprod420),
      (421, yyprod421),
      (422, yyprod422),
      (423, yyprod423),
      (424, yyprod424),
      (425, yyprod425),
      (426, yyprod426),
      (427, yyprod427),
      (428, yyprod428),
      (429, yyprod429),
      (430, yyprod430),
      (431, yyprod431),
      (432, yyprod432),
      (433, yyprod433),
      (434, yyprod434),
      (435, yyprod435),
      (436, yyprod436),
      (437, yyprod437),
      (438, yyprod438),
      (439, yyprod439),
      (440, yyprod440),
      (441, yyprod441),
      (442, yyprod442),
      (443, yyprod443),
      (444, yyprod444),
      (445, yyprod445),
      (446, yyprod446),
      (447, yyprod447),
      (448, yyprod448)];
    sub8 = [      (449, yyprod449),
      (450, yyprod450),
      (451, yyprod451),
      (452, yyprod452),
      (453, yyprod453),
      (454, yyprod454),
      (455, yyprod455),
      (456, yyprod456),
      (457, yyprod457),
      (458, yyprod458),
      (459, yyprod459),
      (460, yyprod460),
      (461, yyprod461),
      (462, yyprod462),
      (463, yyprod463),
      (464, yyprod464)];
      in sub1 `seq` sub2 `seq` sub3 `seq` sub4 `seq` sub5 `seq` sub6 `seq` sub7 `seq` sub8 `seq` arrayFromIndexList (sub1 ++ sub2 ++ sub3 ++ sub4 ++ sub5 ++ sub6 ++ sub7 ++ sub8);
private yyacts  = let 
    sub1 = [      (0, yyaction0),
      (1, yyaction1),
      (2, yyaction2),
      (3, yyaction3),
      (4, yyaction4),
      (5, yyaction5),
      (6, yyaction6),
      (7, yyaction7),
      (8, yyaction8),
      (9, yyaction9),
      (10, yyaction10),
      (11, yyaction11),
      (12, yyaction12),
      (13, yyaction13),
      (14, yyaction14),
      (15, yyaction15),
      (16, yyaction16),
      (17, yyaction17),
      (18, yyaction18),
      (19, yyaction19),
      (20, yyaction20),
      (21, yyaction21),
      (22, yyaction22),
      (23, yyaction23),
      (24, yyaction24),
      (25, yyaction25),
      (26, yyaction26),
      (27, yyaction27),
      (28, yyaction28),
      (29, yyaction29),
      (30, yyaction30),
      (31, yyaction31),
      (32, yyaction32),
      (33, yyaction33),
      (34, yyaction34),
      (35, yyaction35),
      (36, yyaction36),
      (37, yyaction37),
      (38, yyaction38),
      (39, yyaction39),
      (40, yyaction40),
      (41, yyaction41),
      (42, yyaction42),
      (43, yyaction43),
      (44, yyaction44),
      (45, yyaction45),
      (46, yyaction46),
      (47, yyaction47),
      (48, yyaction48),
      (49, yyaction49),
      (50, yyaction50),
      (51, yyaction51),
      (52, yyaction52),
      (53, yyaction53),
      (54, yyaction54),
      (55, yyaction55),
      (56, yyaction56),
      (57, yyaction57),
      (58, yyaction58),
      (59, yyaction59),
      (60, yyaction60),
      (61, yyaction61),
      (62, yyaction62),
      (63, yyaction63)];
    sub2 = [      (64, yyaction64),
      (65, yyaction65),
      (66, yyaction66),
      (67, yyaction67),
      (68, yyaction68),
      (69, yyaction69),
      (70, yyaction70),
      (71, yyaction71),
      (72, yyaction72),
      (73, yyaction73),
      (74, yyaction74),
      (75, yyaction75),
      (76, yyaction76),
      (77, yyaction77),
      (78, yyaction78),
      (79, yyaction79),
      (80, yyaction80),
      (81, yyaction81),
      (82, yyaction82),
      (83, yyaction83),
      (84, yyaction84),
      (85, yyaction85),
      (86, yyaction86),
      (87, yyaction87),
      (88, yyaction88),
      (89, yyaction89),
      (90, yyaction90),
      (91, yyaction91),
      (92, yyaction92),
      (93, yyaction93),
      (94, yyaction94),
      (95, yyaction95),
      (96, yyaction96),
      (97, yyaction97),
      (98, yyaction98),
      (99, yyaction99),
      (100, yyaction100),
      (101, yyaction101),
      (102, yyaction102),
      (103, yyaction103),
      (104, yyaction104),
      (105, yyaction105),
      (106, yyaction106),
      (107, yyaction107),
      (108, yyaction108),
      (109, yyaction109),
      (110, yyaction110),
      (111, yyaction111),
      (112, yyaction112),
      (113, yyaction113),
      (114, yyaction114),
      (115, yyaction115),
      (116, yyaction116),
      (117, yyaction117),
      (118, yyaction118),
      (119, yyaction119),
      (120, yyaction120),
      (121, yyaction121),
      (122, yyaction122),
      (123, yyaction123),
      (124, yyaction124),
      (125, yyaction125),
      (126, yyaction126),
      (127, yyaction127)];
    sub3 = [      (128, yyaction128),
      (129, yyaction129),
      (130, yyaction130),
      (131, yyaction131),
      (132, yyaction132),
      (133, yyaction133),
      (134, yyaction134),
      (135, yyaction135),
      (136, yyaction136),
      (137, yyaction137),
      (138, yyaction138),
      (139, yyaction139),
      (140, yyaction140),
      (141, yyaction141),
      (142, yyaction142),
      (143, yyaction143),
      (144, yyaction144),
      (145, yyaction145),
      (146, yyaction146),
      (147, yyaction147),
      (148, yyaction148),
      (149, yyaction149),
      (150, yyaction150),
      (151, yyaction151),
      (152, yyaction152),
      (153, yyaction153),
      (154, yyaction154),
      (155, yyaction155),
      (156, yyaction156),
      (157, yyaction157),
      (158, yyaction158),
      (159, yyaction159),
      (160, yyaction160),
      (161, yyaction161),
      (162, yyaction162),
      (163, yyaction163),
      (164, yyaction164),
      (165, yyaction165),
      (166, yyaction166),
      (167, yyaction167),
      (168, yyaction168),
      (169, yyaction169),
      (170, yyaction170),
      (171, yyaction171),
      (172, yyaction172),
      (173, yyaction173),
      (174, yyaction174),
      (175, yyaction175),
      (176, yyaction176),
      (177, yyaction177),
      (178, yyaction178),
      (179, yyaction179),
      (180, yyaction180),
      (181, yyaction181),
      (182, yyaction182),
      (183, yyaction183),
      (184, yyaction184),
      (185, yyaction185),
      (186, yyaction186),
      (187, yyaction187),
      (188, yyaction188),
      (189, yyaction189),
      (190, yyaction190),
      (191, yyaction191)];
    sub4 = [      (192, yyaction192),
      (193, yyaction193),
      (194, yyaction194),
      (195, yyaction195),
      (196, yyaction196),
      (197, yyaction197),
      (198, yyaction198),
      (199, yyaction199),
      (200, yyaction200),
      (201, yyaction201),
      (202, yyaction202),
      (203, yyaction203),
      (204, yyaction204),
      (205, yyaction205),
      (206, yyaction206),
      (207, yyaction207),
      (208, yyaction208),
      (209, yyaction209),
      (210, yyaction210),
      (211, yyaction211),
      (212, yyaction212),
      (213, yyaction213),
      (214, yyaction214),
      (215, yyaction215),
      (216, yyaction216),
      (217, yyaction217),
      (218, yyaction218),
      (219, yyaction219),
      (220, yyaction220),
      (221, yyaction221),
      (222, yyaction222),
      (223, yyaction223),
      (224, yyaction224),
      (225, yyaction225),
      (226, yyaction226),
      (227, yyaction227),
      (228, yyaction228),
      (229, yyaction229),
      (230, yyaction230),
      (231, yyaction231),
      (232, yyaction232),
      (233, yyaction233),
      (234, yyaction234),
      (235, yyaction235),
      (236, yyaction236),
      (237, yyaction237),
      (238, yyaction238),
      (239, yyaction239),
      (240, yyaction240),
      (241, yyaction241),
      (242, yyaction242),
      (243, yyaction243),
      (244, yyaction244),
      (245, yyaction245),
      (246, yyaction246),
      (247, yyaction247),
      (248, yyaction248),
      (249, yyaction249),
      (250, yyaction250),
      (251, yyaction251),
      (252, yyaction252),
      (253, yyaction253),
      (254, yyaction254),
      (255, yyaction255)];
    sub5 = [      (256, yyaction256),
      (257, yyaction257),
      (258, yyaction258),
      (259, yyaction259),
      (260, yyaction260),
      (261, yyaction261),
      (262, yyaction262),
      (263, yyaction263),
      (264, yyaction264),
      (265, yyaction265),
      (266, yyaction266),
      (267, yyaction267),
      (268, yyaction268),
      (269, yyaction269),
      (270, yyaction270),
      (271, yyaction271),
      (272, yyaction272),
      (273, yyaction273),
      (274, yyaction274),
      (275, yyaction275),
      (276, yyaction276),
      (277, yyaction277),
      (278, yyaction278),
      (279, yyaction279),
      (280, yyaction280),
      (281, yyaction281),
      (282, yyaction282),
      (283, yyaction283),
      (284, yyaction284),
      (285, yyaction285),
      (286, yyaction286),
      (287, yyaction287),
      (288, yyaction288),
      (289, yyaction289),
      (290, yyaction290),
      (291, yyaction291),
      (292, yyaction292),
      (293, yyaction293),
      (294, yyaction294),
      (295, yyaction295),
      (296, yyaction296),
      (297, yyaction297),
      (298, yyaction298),
      (299, yyaction299),
      (300, yyaction300),
      (301, yyaction301),
      (302, yyaction302),
      (303, yyaction303),
      (304, yyaction304),
      (305, yyaction305),
      (306, yyaction306),
      (307, yyaction307),
      (308, yyaction308),
      (309, yyaction309),
      (310, yyaction310),
      (311, yyaction311),
      (312, yyaction312),
      (313, yyaction313),
      (314, yyaction314),
      (315, yyaction315),
      (316, yyaction316),
      (317, yyaction317),
      (318, yyaction318),
      (319, yyaction319)];
    sub6 = [      (320, yyaction320),
      (321, yyaction321),
      (322, yyaction322),
      (323, yyaction323),
      (324, yyaction324),
      (325, yyaction325),
      (326, yyaction326),
      (327, yyaction327),
      (328, yyaction328),
      (329, yyaction329),
      (330, yyaction330),
      (331, yyaction331),
      (332, yyaction332),
      (333, yyaction333),
      (334, yyaction334),
      (335, yyaction335),
      (336, yyaction336),
      (337, yyaction337),
      (338, yyaction338),
      (339, yyaction339),
      (340, yyaction340),
      (341, yyaction341),
      (342, yyaction342),
      (343, yyaction343),
      (344, yyaction344),
      (345, yyaction345),
      (346, yyaction346),
      (347, yyaction347),
      (348, yyaction348),
      (349, yyaction349),
      (350, yyaction350),
      (351, yyaction351),
      (352, yyaction352),
      (353, yyaction353),
      (354, yyaction354),
      (355, yyaction355),
      (356, yyaction356),
      (357, yyaction357),
      (358, yyaction358),
      (359, yyaction359),
      (360, yyaction360),
      (361, yyaction361),
      (362, yyaction362),
      (363, yyaction363),
      (364, yyaction364),
      (365, yyaction365),
      (366, yyaction366),
      (367, yyaction367),
      (368, yyaction368),
      (369, yyaction369),
      (370, yyaction370),
      (371, yyaction371),
      (372, yyaction372),
      (373, yyaction373),
      (374, yyaction374),
      (375, yyaction375),
      (376, yyaction376),
      (377, yyaction377),
      (378, yyaction378),
      (379, yyaction379),
      (380, yyaction380),
      (381, yyaction381),
      (382, yyaction382),
      (383, yyaction383)];
    sub7 = [      (384, yyaction384),
      (385, yyaction385),
      (386, yyaction386),
      (387, yyaction387),
      (388, yyaction388),
      (389, yyaction389),
      (390, yyaction390),
      (391, yyaction391),
      (392, yyaction392),
      (393, yyaction393),
      (394, yyaction394),
      (395, yyaction395),
      (396, yyaction396),
      (397, yyaction397),
      (398, yyaction398),
      (399, yyaction399),
      (400, yyaction400),
      (401, yyaction401),
      (402, yyaction402),
      (403, yyaction403),
      (404, yyaction404),
      (405, yyaction405),
      (406, yyaction406),
      (407, yyaction407),
      (408, yyaction408),
      (409, yyaction409),
      (410, yyaction410),
      (411, yyaction411),
      (412, yyaction412),
      (413, yyaction413),
      (414, yyaction414),
      (415, yyaction415),
      (416, yyaction416),
      (417, yyaction417),
      (418, yyaction418),
      (419, yyaction419),
      (420, yyaction420),
      (421, yyaction421),
      (422, yyaction422),
      (423, yyaction423),
      (424, yyaction424),
      (425, yyaction425),
      (426, yyaction426),
      (427, yyaction427),
      (428, yyaction428),
      (429, yyaction429),
      (430, yyaction430),
      (431, yyaction431),
      (432, yyaction432),
      (433, yyaction433),
      (434, yyaction434),
      (435, yyaction435),
      (436, yyaction436),
      (437, yyaction437),
      (438, yyaction438),
      (439, yyaction439),
      (440, yyaction440),
      (441, yyaction441),
      (442, yyaction442),
      (443, yyaction443),
      (444, yyaction444),
      (445, yyaction445),
      (446, yyaction446),
      (447, yyaction447)];
    sub8 = [      (448, yyaction448),
      (449, yyaction449),
      (450, yyaction450),
      (451, yyaction451),
      (452, yyaction452),
      (453, yyaction453),
      (454, yyaction454),
      (455, yyaction455),
      (456, yyaction456),
      (457, yyaction457),
      (458, yyaction458),
      (459, yyaction459),
      (460, yyaction460),
      (461, yyaction461),
      (462, yyaction462),
      (463, yyaction463),
      (464, yyaction464),
      (465, yyaction465),
      (466, yyaction466),
      (467, yyaction467),
      (468, yyaction468),
      (469, yyaction469),
      (470, yyaction470),
      (471, yyaction471),
      (472, yyaction472),
      (473, yyaction473),
      (474, yyaction474),
      (475, yyaction475),
      (476, yyaction476),
      (477, yyaction477),
      (478, yyaction478),
      (479, yyaction479),
      (480, yyaction480),
      (481, yyaction481),
      (482, yyaction482),
      (483, yyaction483),
      (484, yyaction484),
      (485, yyaction485),
      (486, yyaction486),
      (487, yyaction487),
      (488, yyaction488),
      (489, yyaction489),
      (490, yyaction490),
      (491, yyaction491),
      (492, yyaction492),
      (493, yyaction493),
      (494, yyaction494),
      (495, yyaction495),
      (496, yyaction496),
      (497, yyaction497),
      (498, yyaction498),
      (499, yyaction499),
      (500, yyaction500),
      (501, yyaction501),
      (502, yyaction502),
      (503, yyaction503),
      (504, yyaction504),
      (505, yyaction505),
      (506, yyaction506),
      (507, yyaction507),
      (508, yyaction508),
      (509, yyaction509),
      (510, yyaction510),
      (511, yyaction511)];
    sub9 = [      (512, yyaction512),
      (513, yyaction513),
      (514, yyaction514),
      (515, yyaction515),
      (516, yyaction516),
      (517, yyaction517),
      (518, yyaction518),
      (519, yyaction519),
      (520, yyaction520),
      (521, yyaction521),
      (522, yyaction522),
      (523, yyaction523),
      (524, yyaction524),
      (525, yyaction525),
      (526, yyaction526),
      (527, yyaction527),
      (528, yyaction528),
      (529, yyaction529),
      (530, yyaction530),
      (531, yyaction531),
      (532, yyaction532),
      (533, yyaction533),
      (534, yyaction534),
      (535, yyaction535),
      (536, yyaction536),
      (537, yyaction537),
      (538, yyaction538),
      (539, yyaction539),
      (540, yyaction540),
      (541, yyaction541),
      (542, yyaction542),
      (543, yyaction543),
      (544, yyaction544),
      (545, yyaction545),
      (546, yyaction546),
      (547, yyaction547),
      (548, yyaction548),
      (549, yyaction549),
      (550, yyaction550),
      (551, yyaction551),
      (552, yyaction552),
      (553, yyaction553),
      (554, yyaction554),
      (555, yyaction555),
      (556, yyaction556),
      (557, yyaction557),
      (558, yyaction558),
      (559, yyaction559),
      (560, yyaction560),
      (561, yyaction561),
      (562, yyaction562),
      (563, yyaction563),
      (564, yyaction564),
      (565, yyaction565),
      (566, yyaction566),
      (567, yyaction567),
      (568, yyaction568),
      (569, yyaction569),
      (570, yyaction570),
      (571, yyaction571),
      (572, yyaction572),
      (573, yyaction573),
      (574, yyaction574),
      (575, yyaction575)];
    sub10 = [      (576, yyaction576),
      (577, yyaction577),
      (578, yyaction578),
      (579, yyaction579),
      (580, yyaction580),
      (581, yyaction581),
      (582, yyaction582),
      (583, yyaction583),
      (584, yyaction584),
      (585, yyaction585),
      (586, yyaction586),
      (587, yyaction587),
      (588, yyaction588),
      (589, yyaction589),
      (590, yyaction590),
      (591, yyaction591),
      (592, yyaction592),
      (593, yyaction593),
      (594, yyaction594),
      (595, yyaction595),
      (596, yyaction596),
      (597, yyaction597),
      (598, yyaction598),
      (599, yyaction599),
      (600, yyaction600),
      (601, yyaction601),
      (602, yyaction602),
      (603, yyaction603),
      (604, yyaction604),
      (605, yyaction605),
      (606, yyaction606),
      (607, yyaction607),
      (608, yyaction608),
      (609, yyaction609),
      (610, yyaction610),
      (611, yyaction611),
      (612, yyaction612),
      (613, yyaction613),
      (614, yyaction614),
      (615, yyaction615),
      (616, yyaction616),
      (617, yyaction617),
      (618, yyaction618),
      (619, yyaction619),
      (620, yyaction620),
      (621, yyaction621),
      (622, yyaction622),
      (623, yyaction623),
      (624, yyaction624),
      (625, yyaction625),
      (626, yyaction626),
      (627, yyaction627),
      (628, yyaction628),
      (629, yyaction629),
      (630, yyaction630),
      (631, yyaction631),
      (632, yyaction632),
      (633, yyaction633),
      (634, yyaction634),
      (635, yyaction635),
      (636, yyaction636),
      (637, yyaction637),
      (638, yyaction638),
      (639, yyaction639)];
    sub11 = [      (640, yyaction640),
      (641, yyaction641),
      (642, yyaction642),
      (643, yyaction643),
      (644, yyaction644),
      (645, yyaction645),
      (646, yyaction646),
      (647, yyaction647),
      (648, yyaction648),
      (649, yyaction649),
      (650, yyaction650),
      (651, yyaction651),
      (652, yyaction652),
      (653, yyaction653),
      (654, yyaction654),
      (655, yyaction655),
      (656, yyaction656),
      (657, yyaction657),
      (658, yyaction658),
      (659, yyaction659),
      (660, yyaction660),
      (661, yyaction661),
      (662, yyaction662),
      (663, yyaction663),
      (664, yyaction664),
      (665, yyaction665),
      (666, yyaction666),
      (667, yyaction667),
      (668, yyaction668),
      (669, yyaction669),
      (670, yyaction670),
      (671, yyaction671),
      (672, yyaction672),
      (673, yyaction673),
      (674, yyaction674),
      (675, yyaction675),
      (676, yyaction676),
      (677, yyaction677),
      (678, yyaction678),
      (679, yyaction679),
      (680, yyaction680),
      (681, yyaction681),
      (682, yyaction682),
      (683, yyaction683),
      (684, yyaction684),
      (685, yyaction685),
      (686, yyaction686),
      (687, yyaction687),
      (688, yyaction688),
      (689, yyaction689),
      (690, yyaction690),
      (691, yyaction691),
      (692, yyaction692),
      (693, yyaction693),
      (694, yyaction694),
      (695, yyaction695),
      (696, yyaction696),
      (697, yyaction697),
      (698, yyaction698),
      (699, yyaction699),
      (700, yyaction700),
      (701, yyaction701),
      (702, yyaction702),
      (703, yyaction703)];
    sub12 = [      (704, yyaction704),
      (705, yyaction705),
      (706, yyaction706),
      (707, yyaction707),
      (708, yyaction708),
      (709, yyaction709),
      (710, yyaction710),
      (711, yyaction711),
      (712, yyaction712),
      (713, yyaction713),
      (714, yyaction714),
      (715, yyaction715),
      (716, yyaction716),
      (717, yyaction717),
      (718, yyaction718),
      (719, yyaction719),
      (720, yyaction720),
      (721, yyaction721),
      (722, yyaction722),
      (723, yyaction723),
      (724, yyaction724),
      (725, yyaction725),
      (726, yyaction726)];
      in sub1 `seq` sub2 `seq` sub3 `seq` sub4 `seq` sub5 `seq` sub6 `seq` sub7 `seq` sub8 `seq` sub9 `seq` sub10 `seq` sub11 `seq` sub12 `seq` arrayFromIndexList (sub1 ++ sub2 ++ sub3 ++ sub4 ++ sub5 ++ sub6 ++ sub7 ++ sub8 ++ sub9 ++ sub10 ++ sub11 ++ sub12);
private yyrecs  = let 
    sub1 = [      (0, yybadstart 0 "a module"),
      (1, yybadstart 1 "a sequence of doc comments"),
      (2, yyrecover 2),
      (3, yybadstart 3 "a module clause"),
      (4, yyparsing  4 "a possibly empty sequence of doc comments"),
      (5, yyparsing  5 "a sequence of doc comments"),
      (6, yyparsing  6 "a module clause"),
      (7, yyexpect 7(yyfromId PACKAGE)),
      (8, yyparsing  8 "a module"),
      (9, yyparsing  9 "a module"),
      (10, yyparsing  10 "a variable name"),
      (11, yyparsing  11 "a module name"),
      (12, yyparsing  12 "a module name"),
      (13, yyparsing  13 "a variable name"),
      (14, yyparsing  14 "a variable name"),
      (15, yyparsing  15 "a variable name"),
      (16, yyparsing  16 "a variable name"),
      (17, yyparsing  17 "a variable name"),
      (18, yyparsing  18 "a variable name"),
      (19, yyparsing  19 "a module name"),
      (20, yyexpect 20(yyfromCh '.')),
      (21, yyparsing  21 "a module clause"),
      (22, yyparsing  22 "a module clause"),
      (23, yyparsing  23 "a variable name"),
      (24, yyparsing  24 "a qualified constructor or type name"),
      (25, yyparsing  25 "a qualified variable name"),
      (26, yyparsing  26 "documentation"),
      (27, yyparsing  27 "a module import"),
      (28, yyexpect 28(yyfromId INTCONST)),
      (29, yyexpect 29(yyfromId INTCONST)),
      (30, yyexpect 30(yyfromId INTCONST)),
      (31, yyparsing  31 "specification for module class "),
      (32, yyexpect 32(yyfromId CONID)),
      (33, yyexpect 33(yyfromId CONID)),
      (34, yyparsing  34 "a type class declaration"),
      (35, yyparsing  35 "an instance declaration"),
      (36, yyparsing  36 "a protected or private declaration"),
      (37, yyexpect 37(yyfromId CONID)),
      (38, yyparsing  38 "a literal"),
      (39, yyparsing  39 "a literal"),
      (40, yyparsing  40 "a top level expression"),
      (41, yyparsing  41 "a top level expression"),
      (42, yyparsing  42 "an instance derivation"),
      (43, yyexpect 43(yyfromCh '{')),
      (44, yyexpect 44(yyfromCh '{')),
      (45, yyparsing  45 "a protected or private declaration"),
      (46, yyparsing  46 "a protected or private declaration"),
      (47, yyparsing  47 "a protected or private declaration"),
      (48, yyexpect 48(yyfromId NATIVE)),
      (49, yyparsing  49 "a literal"),
      (50, yyparsing  50 "a literal"),
      (51, yyparsing  51 "a literal"),
      (52, yyparsing  52 "a literal"),
      (53, yyparsing  53 "a literal"),
      (54, yyparsing  54 "a literal"),
      (55, yyparsing  55 "a literal"),
      (56, yyparsing  56 "a literal"),
      (57, yyparsing  57 "a literal"),
      (58, yyparsing  58 "binary expression"),
      (59, yyparsing  59 "an annotated item"),
      (60, yyparsing  60 "a term"),
      (61, yyparsing  61 "an unary operator"),
      (62, yyparsing  62 "an unary operator"),
      (63, yyparsing  63 "a lambda abstraction")];
    sub2 = [      (64, yyparsing  64 "a term"),
      (65, yyexpect 65(yyfromCh '}')),
      (66, yyparsing  66 "declarations"),
      (67, yyparsing  67 "a declaration"),
      (68, yyparsing  68 "a declaration"),
      (69, yyparsing  69 "a declaration"),
      (70, yyparsing  70 "a top level declaration"),
      (71, yyparsing  71 "a declaration"),
      (72, yyparsing  72 "a top level declaration"),
      (73, yyparsing  73 "a top level declaration"),
      (74, yyparsing  74 "a top level declaration"),
      (75, yyparsing  75 "a declaration"),
      (76, yyparsing  76 "a declaration"),
      (77, yyparsing  77 "a declaration"),
      (78, yyparsing  78 "a declaration"),
      (79, yyparsing  79 "a declaration"),
      (80, yyparsing  80 "a local declaration"),
      (81, yyparsing  81 "a local declaration"),
      (82, yybadstart 82 "a where clause"),
      (83, yyparsing  83 "an annotated item"),
      (84, yyparsing  84 "a term"),
      (85, yyparsing  85 "a term"),
      (86, yyparsing  86 "unary expression"),
      (87, yyparsing  87 "a fixity declaration"),
      (88, yyexpect 88(yyfromId DCOLON)),
      (89, yyparsing  89 "a list of items to annotate"),
      (90, yyparsing  90 "a declaration of a native item"),
      (91, yybadstart 91 "declarations local to a class, instance or type"),
      (92, yyparsing  92 "a function or pattern binding"),
      (93, yyparsing  93 "left hand side of a function or pattern binding"),
      (94, yyparsing  94 "a term"),
      (95, yyparsing  95 "a top level expression"),
      (96, yyparsing  96 "binary expression"),
      (97, yyparsing  97 "a top level expression"),
      (98, yyparsing  98 "function application"),
      (99, yyparsing  99 "unary expression"),
      (100, yyexpect 100(yyfromCh '{')),
      (101, yyparsing  101 "a primary expression"),
      (102, yyparsing  102 "a word"),
      (103, yyexpect 103(yyfromCh '{')),
      (104, yyparsing  104 "a module"),
      (105, yyexpect 105(yyfromCh '(')),
      (106, yyparsing  106 "words"),
      (107, yyparsing  107 "a module name"),
      (108, yyparsing  108 "a module name"),
      (109, yyparsing  109 "a module clause"),
      (110, yyparsing  110 "a variable or an operator"),
      (111, yyparsing  111 "a qualified constructor or type name"),
      (112, yyparsing  112 "a qualified variable name"),
      (113, yyparsing  113 "a variable or an operator"),
      (114, yyparsing  114 "a qualified variable name"),
      (115, yyparsing  115 "a module import"),
      (116, yyparsing  116 "the start of a fixity declaration"),
      (117, yyparsing  117 "the start of a fixity declaration"),
      (118, yyparsing  118 "the start of a fixity declaration"),
      (119, yyparsing  119 "a variable name"),
      (120, yybadstart 120 "the type this module derives from"),
      (121, yyparsing  121 "an operator"),
      (122, yyparsing  122 "the frege name of the native method"),
      (123, yyparsing  123 "an annotated item"),
      (124, yyparsing  124 "the frege name of the native method"),
      (125, yyparsing  125 "the frege name of the native method"),
      (126, yyparsing  126 "the frege name of the native method"),
      (127, yyparsing  127 "a specification of a native item")];
    sub3 = [      (128, yyexpect 128(yyfromId DCOLON)),
      (129, yyparsing  129 "a data definition"),
      (130, yyparsing  130 "a data definition"),
      (131, yyparsing  131 "a qualified constructor or type name"),
      (132, yyparsing  132 "type class context"),
      (133, yybadstart 133 "a type variable"),
      (134, yyparsing  134 "type class context"),
      (135, yybadstart 135 "declarations local to a class, instance or type"),
      (136, yyparsing  136 "instance context"),
      (137, yyparsing  137 "instance constraint"),
      (138, yyparsing  138 "instance context"),
      (139, yyparsing  139 "instance head"),
      (140, yybadstart 140 "declarations local to a class, instance or type"),
      (141, yyparsing  141 "a protected or private declaration"),
      (142, yyparsing  142 "a type declaration"),
      (143, yyparsing  143 "a qualified variable name"),
      (144, yyparsing  144 "a term"),
      (145, yybadstart 145 "then branch"),
      (146, yyparsing  146 "an expression"),
      (147, yyexpect 147(yyfromId OF)),
      (148, yyparsing  148 "an instance derivation"),
      (149, yyparsing  149 "a top level expression"),
      (150, yyparsing  150 "a primary expression"),
      (151, yyparsing  151 "a declaration of a native item"),
      (152, yyparsing  152 "a protected or private declaration"),
      (153, yyparsing  153 "a protected or private declaration"),
      (154, yyparsing  154 "a protected or private declaration"),
      (155, yyparsing  155 "a declaration of a native item"),
      (156, yyparsing  156 "binary expression"),
      (157, yyparsing  157 "an annotated item"),
      (158, yyparsing  158 "a term"),
      (159, yybadstart 159 "a sequence of one or more ','"),
      (160, yyparsing  160 "an annotated item"),
      (161, yyparsing  161 "an annotated item"),
      (162, yyexpect 162(yyfromCh ')')),
      (163, yyparsing  163 "a term"),
      (164, yybadstart 164 "an operator"),
      (165, yyparsing  165 "a term"),
      (166, yyparsing  166 "a term"),
      (167, yyparsing  167 "a term"),
      (168, yyparsing  168 "a lambda abstraction"),
      (169, yyparsing  169 "lambda patterns"),
      (170, yyparsing  170 "a module"),
      (171, yyparsing  171 "declarations"),
      (172, yyexpect 172(yyfromCh '{')),
      (173, yyparsing  173 "a function or pattern binding"),
      (174, yyparsing  174 "a term"),
      (175, yyparsing  175 "unary expression"),
      (176, yyparsing  176 "an operator"),
      (177, yyparsing  177 "an operator"),
      (178, yyparsing  178 "an operator"),
      (179, yyparsing  179 "some operators"),
      (180, yyparsing  180 "a fixity declaration"),
      (181, yyparsing  181 "an annotation"),
      (182, yyparsing  182 "a list of items to annotate"),
      (183, yyexpect 183(yyfromCh '{')),
      (184, yyparsing  184 "a data definition"),
      (185, yyparsing  185 "a guarded expression"),
      (186, yyparsing  186 "a function or pattern binding"),
      (187, yyparsing  187 "a function or pattern binding"),
      (188, yyparsing  188 "guarded expressions"),
      (189, yyparsing  189 "binary expression"),
      (190, yyparsing  190 "binary expression"),
      (191, yyparsing  191 "function application")];
    sub4 = [      (192, yyparsing  192 "a primary expression"),
      (193, yyexpect 193(yyfromId VARID)),
      (194, yyparsing  194 "a module"),
      (195, yyparsing  195 "a module"),
      (196, yyparsing  196 "a module clause"),
      (197, yyparsing  197 "words"),
      (198, yyparsing  198 "a module name"),
      (199, yyparsing  199 "a qualified constructor or type name"),
      (200, yyparsing  200 "a qualified variable name"),
      (201, yyparsing  201 "a module import"),
      (202, yyparsing  202 "a module import"),
      (203, yyparsing  203 "an import list"),
      (204, yyparsing  204 "an import list"),
      (205, yyparsing  205 "a module import"),
      (206, yyexpect 206(yyfromCh '(')),
      (207, yyparsing  207 "the type this module derives from"),
      (208, yybadstart 208 "the interfaces this module implements"),
      (209, yyexpect 209(yyfromCh ')')),
      (210, yyexpect 210(yyfromCh ')')),
      (211, yyexpect 211(yyfromCh ')')),
      (212, yyparsing  212 "a valid java identifier"),
      (213, yyparsing  213 "a valid java identifier"),
      (214, yybadstart 214 "a valid java identifier"),
      (215, yyparsing  215 "a valid java identifier"),
      (216, yyparsing  216 "a valid java identifier"),
      (217, yyparsing  217 "native generic type arguments"),
      (218, yyparsing  218 "a native item"),
      (219, yyparsing  219 "a valid java identifier"),
      (220, yyparsing  220 "a native item"),
      (221, yyparsing  221 "a native item"),
      (222, yybadstart 222 "native generic type arguments"),
      (223, yyparsing  223 "a specification of a native item"),
      (224, yyparsing  224 "a declaration of a native item"),
      (225, yyparsing  225 "a type variable"),
      (226, yyparsing  226 "a type variable"),
      (227, yyparsing  227 "a data definition"),
      (228, yyexpect 228(yyfromCh '=')),
      (229, yyparsing  229 "type variables bound in forall or data/type/newtype"),
      (230, yyparsing  230 "a data definition"),
      (231, yyexpect 231(yyfromCh '=')),
      (232, yyexpect 232(yyfromId CONID)),
      (233, yyparsing  233 "simple constraints"),
      (234, yyexpect 234(yyfromCh ')')),
      (235, yyparsing  235 "simple constraint"),
      (236, yyexpect 236(yyfromId CONID)),
      (237, yyparsing  237 "a type class declaration"),
      (238, yyparsing  238 "instance constraints"),
      (239, yyexpect 239(yyfromCh ')')),
      (240, yyparsing  240 "a non function type"),
      (241, yyparsing  241 "a non function type"),
      (242, yyparsing  242 "a type constructor"),
      (243, yyparsing  243 "instance constraint"),
      (244, yyparsing  244 "a non function type"),
      (245, yyparsing  245 "a non function type"),
      (246, yyparsing  246 "instance head"),
      (247, yyparsing  247 "an instance declaration"),
      (248, yyparsing  248 "a type declaration"),
      (249, yyexpect 249(yyfromCh '=')),
      (250, yyparsing  250 "binary expression"),
      (251, yyparsing  251 "a term"),
      (252, yyparsing  252 "unary expression"),
      (253, yyparsing  253 "then branch"),
      (254, yyexpect 254(yyfromId THEN)),
      (255, yyparsing  255 "a top level expression")];
    sub5 = [      (256, yyparsing  256 "an expression"),
      (257, yyexpect 257(yyfromCh '{')),
      (258, yyparsing  258 "a function or pattern binding"),
      (259, yybadstart 259 "a where clause"),
      (260, yyparsing  260 "declarations in a let expression or where clause"),
      (261, yyexpect 261(yyfromCh '}')),
      (262, yyexpect 262(yyfromCh '{')),
      (263, yyparsing  263 "a list comprehension qualifier"),
      (264, yyparsing  264 "do expression qualifiers"),
      (265, yyparsing  265 "a list comprehension qualifier"),
      (266, yyexpect 266(yyfromCh '}')),
      (267, yyparsing  267 "an annotated item"),
      (268, yyparsing  268 "a sequence of one or more ','"),
      (269, yyparsing  269 "an annotated item"),
      (270, yyexpect 270(yyfromCh ')')),
      (271, yyparsing  271 "an annotated item"),
      (272, yyparsing  272 "a term"),
      (273, yyparsing  273 "a term"),
      (274, yyparsing  274 "a term"),
      (275, yyparsing  275 "a term"),
      (276, yyparsing  276 "an operator"),
      (277, yyparsing  277 "binary expression"),
      (278, yyexpect 278(yyfromCh ')')),
      (279, yyparsing  279 "list of expressions separated by ','"),
      (280, yyparsing  280 "a term"),
      (281, yyparsing  281 "a term"),
      (282, yyparsing  282 "a term"),
      (283, yyparsing  283 "a lambda body"),
      (284, yyparsing  284 "a lambda body"),
      (285, yyparsing  285 "a lambda abstraction"),
      (286, yyparsing  286 "lambda patterns"),
      (287, yyparsing  287 "declarations"),
      (288, yyparsing  288 "a where clause"),
      (289, yyparsing  289 "a term"),
      (290, yyparsing  290 "field"),
      (291, yyexpect 291(yyfromCh '}')),
      (292, yyparsing  292 "field list"),
      (293, yyparsing  293 "some operators"),
      (294, yyparsing  294 "a qualified type"),
      (295, yyparsing  295 "an annotation"),
      (296, yyparsing  296 "a qualified type"),
      (297, yyparsing  297 "a qualified type"),
      (298, yyparsing  298 "a constrained type"),
      (299, yyparsing  299 "a constrained type"),
      (300, yyparsing  300 "a type application"),
      (301, yyparsing  301 "non function types"),
      (302, yyparsing  302 "a list of items to annotate"),
      (303, yyparsing  303 "declarations local to a class, instance or type"),
      (304, yyparsing  304 "a guard qualifier"),
      (305, yyparsing  305 "guard qualifiers"),
      (306, yybadstart 306 "'='"),
      (307, yyparsing  307 "a function or pattern binding"),
      (308, yyparsing  308 "guarded expressions"),
      (309, yyparsing  309 "binary expression"),
      (310, yyparsing  310 "binary expression"),
      (311, yyparsing  311 "a primary expression"),
      (312, yyexpect 312(yyfromId VARID)),
      (313, yyparsing  313 "a primary expression"),
      (314, yyparsing  314 "a primary expression"),
      (315, yyparsing  315 "a primary expression"),
      (316, yyparsing  316 "a primary expression"),
      (317, yyexpect 317(yyfromCh '}')),
      (318, yyparsing  318 "field list"),
      (319, yyexpect 319(yyfromCh '}'))];
    sub6 = [      (320, yyparsing  320 "a qualified variable name"),
      (321, yyexpect 321(yyfromCh ')')),
      (322, yyparsing  322 "a qualified variable name"),
      (323, yyparsing  323 "a list of qualified variable names"),
      (324, yyparsing  324 "a qualified variable name"),
      (325, yyparsing  325 "a module import"),
      (326, yyparsing  326 "a module import"),
      (327, yyparsing  327 "an import list"),
      (328, yyparsing  328 "an import item"),
      (329, yyparsing  329 "a qualified variable name"),
      (330, yyparsing  330 "an import specification"),
      (331, yyparsing  331 "an import list"),
      (332, yyexpect 332(yyfromCh ')')),
      (333, yyparsing  333 "a list of import items"),
      (334, yyparsing  334 "an import specification"),
      (335, yyparsing  335 "an import item"),
      (336, yyparsing  336 "an import item"),
      (337, yyparsing  337 "an import item"),
      (338, yyparsing  338 "an import item"),
      (339, yyparsing  339 "an import list"),
      (340, yyparsing  340 "the type this module derives from"),
      (341, yyparsing  341 "a non function type"),
      (342, yyparsing  342 "a non function type"),
      (343, yyparsing  343 "the interfaces this module implements"),
      (344, yyexpect 344(yyfromId WHERE)),
      (345, yyparsing  345 "an annotated item"),
      (346, yyparsing  346 "an annotated item"),
      (347, yyparsing  347 "an annotated item"),
      (348, yybadstart 348 "a valid java identifier"),
      (349, yyparsing  349 "a valid java identifier"),
      (350, yybadstart 350 "a valid java identifier"),
      (351, yyparsing  351 "native generic type arguments"),
      (352, yyparsing  352 "a list of types"),
      (353, yyexpect 353(yyfromCh '}')),
      (354, yyparsing  354 "a specification of a native item"),
      (355, yyparsing  355 "a method type with optional throws clause"),
      (356, yyparsing  356 "method types with optional throws clauses"),
      (357, yyparsing  357 "a declaration of a native item"),
      (358, yyparsing  358 "a type variable"),
      (359, yyparsing  359 "a type variable"),
      (360, yyparsing  360 "a type variable"),
      (361, yyparsing  361 "a variant of an algebraic datatype"),
      (362, yyparsing  362 "a variant of an algebraic datatype"),
      (363, yyparsing  363 "a variant of an algebraic datatype"),
      (364, yyparsing  364 "a variant of an algebraic datatype"),
      (365, yyparsing  365 "a variant of an algebraic datatype"),
      (366, yyexpect 366(yyfromId CONID)),
      (367, yyexpect 367(yyfromId CONID)),
      (368, yyparsing  368 "a data definition"),
      (369, yyparsing  369 "a variant of an algebraic datatype"),
      (370, yyparsing  370 "a variant of an algebraic datatype"),
      (371, yyparsing  371 "a variant of an algebraic datatype"),
      (372, yyparsing  372 "a data definition"),
      (373, yyparsing  373 "type variables bound in forall or data/type/newtype"),
      (374, yyparsing  374 "a native data type"),
      (375, yyexpect 375(yyfromId NATIVE)),
      (376, yyparsing  376 "a data definition"),
      (377, yyparsing  377 "a data definition"),
      (378, yyparsing  378 "an algebraic datatype"),
      (379, yyparsing  379 "a data definition"),
      (380, yyparsing  380 "simple constraints"),
      (381, yyparsing  381 "type class context"),
      (382, yybadstart 382 "a type variable"),
      (383, yyparsing  383 "instance constraints")];
    sub7 = [      (384, yyparsing  384 "instance context"),
      (385, yyparsing  385 "a type variable"),
      (386, yyexpect 386(yyfromCh ')')),
      (387, yyparsing  387 "a type constructor"),
      (388, yyparsing  388 "a non function type"),
      (389, yyexpect 389(yyfromCh ')')),
      (390, yyparsing  390 "a type constructor"),
      (391, yyexpect 391(yyfromCh ']')),
      (392, yybadstart 392 "a sequence of one or more ','"),
      (393, yyexpect 393(yyfromCh ']')),
      (394, yyparsing  394 "instance head"),
      (395, yyparsing  395 "a type declaration"),
      (396, yyparsing  396 "a type declaration"),
      (397, yyparsing  397 "a term"),
      (398, yyparsing  398 "a term"),
      (399, yyparsing  399 "a term"),
      (400, yyparsing  400 "then branch"),
      (401, yybadstart 401 "else branch"),
      (402, yyparsing  402 "an expression"),
      (403, yyparsing  403 "a top level expression"),
      (404, yyparsing  404 "declarations in a let expression or where clause"),
      (405, yyexpect 405(yyfromId IN)),
      (406, yyparsing  406 "a list comprehension qualifier"),
      (407, yyparsing  407 "a guard qualifier"),
      (408, yyparsing  408 "a list comprehension qualifier"),
      (409, yyparsing  409 "do expression qualifiers"),
      (410, yyparsing  410 "a primary expression"),
      (411, yyparsing  411 "a term"),
      (412, yyparsing  412 "list of expressions separated by ';'"),
      (413, yyexpect 413(yyfromCh ')')),
      (414, yyparsing  414 "list of expressions separated by ','"),
      (415, yyexpect 415(yyfromCh ')')),
      (416, yyparsing  416 "a term"),
      (417, yyparsing  417 "a term"),
      (418, yyparsing  418 "list of expressions separated by ','"),
      (419, yyparsing  419 "list comprehension qualifiers"),
      (420, yyexpect 420(yyfromCh ']')),
      (421, yyparsing  421 "a term"),
      (422, yyexpect 422(yyfromCh ']')),
      (423, yyparsing  423 "a lambda body"),
      (424, yyparsing  424 "a where clause"),
      (425, yyexpect 425(yyfromCh '}')),
      (426, yyparsing  426 "field"),
      (427, yyparsing  427 "a term"),
      (428, yyparsing  428 "field list"),
      (429, yybadstart 429 "'.' or '•'"),
      (430, yyparsing  430 "a type"),
      (431, yyparsing  431 "a constrained type"),
      (432, yyparsing  432 "non function types"),
      (433, yyparsing  433 "a protected or private local declaration"),
      (434, yyparsing  434 "a protected or private local declaration"),
      (435, yyparsing  435 "a protected or private local declaration"),
      (436, yyparsing  436 "declarations local to a class, instance or type"),
      (437, yyparsing  437 "a commented local declaration"),
      (438, yyparsing  438 "a protected or private local declaration"),
      (439, yyexpect 439(yyfromCh '}')),
      (440, yyparsing  440 "local declarations"),
      (441, yyparsing  441 "a commented local declaration"),
      (442, yyparsing  442 "guard qualifiers"),
      (443, yyparsing  443 "'='"),
      (444, yyparsing  444 "'='"),
      (445, yyparsing  445 "a guarded expression"),
      (446, yyparsing  446 "a primary expression"),
      (447, yyexpect 447(yyfromCh '}'))];
    sub8 = [      (448, yyexpect 448(yyfromCh ']')),
      (449, yyparsing  449 "a primary expression"),
      (450, yyexpect 450(yyfromCh '}')),
      (451, yyparsing  451 "a primary expression"),
      (452, yyparsing  452 "a primary expression"),
      (453, yyparsing  453 "field list"),
      (454, yyparsing  454 "a module"),
      (455, yyparsing  455 "a qualified variable name"),
      (456, yyparsing  456 "a qualified variable name"),
      (457, yyparsing  457 "a module clause"),
      (458, yyparsing  458 "a list of qualified variable names"),
      (459, yyparsing  459 "a module import"),
      (460, yyparsing  460 "an import item"),
      (461, yyparsing  461 "a qualified variable name"),
      (462, yyparsing  462 "an import specification"),
      (463, yyparsing  463 "an import list"),
      (464, yyparsing  464 "a list of import items"),
      (465, yyparsing  465 "a simple name for a member or import item"),
      (466, yyparsing  466 "a simple name for a member or import item"),
      (467, yyparsing  467 "a simple name for a member or import item"),
      (468, yyparsing  468 "an import specification"),
      (469, yyexpect 469(yyfromCh ')')),
      (470, yyparsing  470 "a non function type"),
      (471, yyparsing  471 "the interfaces this module implements"),
      (472, yyexpect 472(yyfromCh '{')),
      (473, yyparsing  473 "specification for module class "),
      (474, yyparsing  474 "a valid java identifier"),
      (475, yyparsing  475 "a valid java identifier"),
      (476, yyparsing  476 "a list of types"),
      (477, yyparsing  477 "native generic type arguments"),
      (478, yyparsing  478 "a method type with optional throws clause"),
      (479, yyparsing  479 "method types with optional throws clauses"),
      (480, yyparsing  480 "a type variable"),
      (481, yyparsing  481 "a type variable"),
      (482, yyexpect 482(yyfromCh ')')),
      (483, yyexpect 483(yyfromCh ')')),
      (484, yyparsing  484 "a variant of an algebraic datatype"),
      (485, yyparsing  485 "constructor field represented by a type"),
      (486, yyparsing  486 "constructor field represented by a type"),
      (487, yyparsing  487 "constructor field represented by a type"),
      (488, yyparsing  488 "a variant of an algebraic datatype"),
      (489, yyparsing  489 "constructor fields represented by types"),
      (490, yyparsing  490 "constructor field represented by a type"),
      (491, yyparsing  491 "a variant of an algebraic datatype"),
      (492, yyparsing  492 "a variant of an algebraic datatype"),
      (493, yyparsing  493 "a variant of an algebraic datatype"),
      (494, yyparsing  494 "a variant of an algebraic datatype"),
      (495, yyparsing  495 "a variant of an algebraic datatype"),
      (496, yyparsing  496 "a variant of an algebraic datatype"),
      (497, yyparsing  497 "a variant of an algebraic datatype"),
      (498, yyparsing  498 "a data definition"),
      (499, yyparsing  499 "a native data type"),
      (500, yybadstart 500 "native generic type arguments"),
      (501, yyparsing  501 "a data definition"),
      (502, yyparsing  502 "an algebraic datatype"),
      (503, yyparsing  503 "a data definition"),
      (504, yyparsing  504 "a data definition"),
      (505, yyparsing  505 "simple constraints"),
      (506, yybadstart 506 "declarations local to a class, instance or type"),
      (507, yyparsing  507 "instance constraints"),
      (508, yyparsing  508 "a type constructor"),
      (509, yyparsing  509 "a non function type"),
      (510, yyparsing  510 "a non function type"),
      (511, yyparsing  511 "a non function type")];
    sub9 = [      (512, yyparsing  512 "a type constructor"),
      (513, yyparsing  513 "a non function type"),
      (514, yyparsing  514 "instance head"),
      (515, yyparsing  515 "a type declaration"),
      (516, yyparsing  516 "else branch"),
      (517, yyexpect 517(yyfromId ELSE)),
      (518, yyparsing  518 "a top level expression"),
      (519, yyparsing  519 "a pattern"),
      (520, yyparsing  520 "case alternative"),
      (521, yybadstart 521 "a where clause"),
      (522, yyexpect 522(yyfromCh '}')),
      (523, yyparsing  523 "declarations in a let expression or where clause"),
      (524, yyparsing  524 "a top level expression"),
      (525, yyexpect 525(yyfromCh '}')),
      (526, yyparsing  526 "a guard qualifier"),
      (527, yyparsing  527 "a list comprehension qualifier"),
      (528, yyparsing  528 "do expression qualifiers"),
      (529, yyparsing  529 "list of expressions separated by ';'"),
      (530, yyparsing  530 "a term"),
      (531, yyparsing  531 "a term"),
      (532, yyparsing  532 "list comprehension qualifiers"),
      (533, yyparsing  533 "a term"),
      (534, yyparsing  534 "a term"),
      (535, yyparsing  535 "a where clause"),
      (536, yyparsing  536 "field"),
      (537, yyparsing  537 "field list"),
      (538, yyparsing  538 "'.' or '•'"),
      (539, yyparsing  539 "'.' or '•'"),
      (540, yyparsing  540 "a qualified type"),
      (541, yyparsing  541 "a type"),
      (542, yyparsing  542 "a type"),
      (543, yyparsing  543 "a constrained type"),
      (544, yyparsing  544 "a protected or private local declaration"),
      (545, yyparsing  545 "a protected or private local declaration"),
      (546, yyparsing  546 "a protected or private local declaration"),
      (547, yyparsing  547 "a commented local declaration"),
      (548, yyparsing  548 "declarations local to a class, instance or type"),
      (549, yyparsing  549 "local declarations"),
      (550, yyparsing  550 "guard qualifiers"),
      (551, yyparsing  551 "a guarded expression"),
      (552, yyparsing  552 "a primary expression"),
      (553, yyexpect 553(yyfromCh '}')),
      (554, yyparsing  554 "a primary expression"),
      (555, yyparsing  555 "a primary expression"),
      (556, yyparsing  556 "a primary expression"),
      (557, yyparsing  557 "a primary expression"),
      (558, yyparsing  558 "field"),
      (559, yyparsing  559 "a primary expression"),
      (560, yyparsing  560 "a primary expression"),
      (561, yyparsing  561 "field"),
      (562, yyparsing  562 "field"),
      (563, yyparsing  563 "field list"),
      (564, yyparsing  564 "a qualified variable name"),
      (565, yyparsing  565 "a list of qualified variable names"),
      (566, yyparsing  566 "a member import specification"),
      (567, yyparsing  567 "an import item"),
      (568, yyexpect 568(yyfromCh ')')),
      (569, yyparsing  569 "a member import specification"),
      (570, yyparsing  570 "a list of member imports"),
      (571, yyparsing  571 "a list of import items"),
      (572, yyparsing  572 "an import list"),
      (573, yyparsing  573 "a non function type"),
      (574, yyparsing  574 "java code"),
      (575, yyparsing  575 "a list of types")];
    sub10 = [      (576, yyparsing  576 "a method type with optional throws clause"),
      (577, yyparsing  577 "method types with optional throws clauses"),
      (578, yyexpect 578(yyfromCh ')')),
      (579, yyparsing  579 "a type kind"),
      (580, yyparsing  580 "a type kind"),
      (581, yyexpect 581(yyfromCh ')')),
      (582, yyparsing  582 "a type kind"),
      (583, yyparsing  583 "a type variable"),
      (584, yyparsing  584 "a type variable"),
      (585, yyparsing  585 "a constructor field"),
      (586, yyexpect 586(yyfromCh '}')),
      (587, yyparsing  587 "constructor fields"),
      (588, yyparsing  588 "constructor field represented by a type"),
      (589, yyparsing  589 "constructor field represented by a type"),
      (590, yyparsing  590 "constructor fields represented by types"),
      (591, yyparsing  591 "a native generic type"),
      (592, yyparsing  592 "an algebraic datatype"),
      (593, yyparsing  593 "a data definition"),
      (594, yyparsing  594 "a type class declaration"),
      (595, yyexpect 595(yyfromCh ')')),
      (596, yyparsing  596 "a list of types separated by '|'"),
      (597, yyexpect 597(yyfromCh ')')),
      (598, yyparsing  598 "else branch"),
      (599, yyparsing  599 "a top level expression"),
      (600, yyparsing  600 "case alternative"),
      (601, yyparsing  601 "case alternative"),
      (602, yyparsing  602 "list of case alternatives"),
      (603, yyparsing  603 "case alternative"),
      (604, yyparsing  604 "a top level expression"),
      (605, yyparsing  605 "a top level expression"),
      (606, yyparsing  606 "a list comprehension qualifier"),
      (607, yyparsing  607 "list of expressions separated by ';'"),
      (608, yyparsing  608 "list comprehension qualifiers"),
      (609, yyparsing  609 "a qualified type"),
      (610, yyparsing  610 "local declarations"),
      (611, yyparsing  611 "a primary expression"),
      (612, yyparsing  612 "a primary expression"),
      (613, yyparsing  613 "a primary expression"),
      (614, yyparsing  614 "field"),
      (615, yyparsing  615 "field"),
      (616, yyparsing  616 "a member import specification"),
      (617, yyparsing  617 "an import item"),
      (618, yyparsing  618 "a member import specification"),
      (619, yyparsing  619 "a list of member imports"),
      (620, yyparsing  620 "java token"),
      (621, yyparsing  621 "java token"),
      (622, yyparsing  622 "java token"),
      (623, yyparsing  623 "java token"),
      (624, yyparsing  624 "java token"),
      (625, yyparsing  625 "java token"),
      (626, yyparsing  626 "java token"),
      (627, yyparsing  627 "java token"),
      (628, yyparsing  628 "java token"),
      (629, yyparsing  629 "java token"),
      (630, yyparsing  630 "java token"),
      (631, yyparsing  631 "java token"),
      (632, yyparsing  632 "java token"),
      (633, yyparsing  633 "java token"),
      (634, yyparsing  634 "java token"),
      (635, yyparsing  635 "java token"),
      (636, yyparsing  636 "java token"),
      (637, yyparsing  637 "java token"),
      (638, yyparsing  638 "java token"),
      (639, yyparsing  639 "java token")];
    sub11 = [      (640, yyparsing  640 "java token"),
      (641, yyparsing  641 "java token"),
      (642, yyparsing  642 "java token"),
      (643, yyparsing  643 "java token"),
      (644, yyparsing  644 "java token"),
      (645, yyparsing  645 "java token"),
      (646, yyparsing  646 "java token"),
      (647, yyparsing  647 "java token"),
      (648, yyparsing  648 "java token"),
      (649, yyparsing  649 "java token"),
      (650, yyparsing  650 "java token"),
      (651, yyparsing  651 "java token"),
      (652, yyparsing  652 "java token"),
      (653, yyparsing  653 "java token"),
      (654, yyparsing  654 "java token"),
      (655, yyparsing  655 "java token"),
      (656, yyparsing  656 "java token"),
      (657, yyparsing  657 "java token"),
      (658, yyparsing  658 "java token"),
      (659, yyparsing  659 "java token"),
      (660, yyparsing  660 "java token"),
      (661, yyparsing  661 "java token"),
      (662, yyparsing  662 "java token"),
      (663, yyparsing  663 "java token"),
      (664, yyparsing  664 "java token"),
      (665, yyparsing  665 "java token"),
      (666, yyparsing  666 "java token"),
      (667, yyparsing  667 "java token"),
      (668, yyparsing  668 "java token"),
      (669, yyparsing  669 "java token"),
      (670, yyparsing  670 "java tokens"),
      (671, yyparsing  671 "java code"),
      (672, yyparsing  672 "java token"),
      (673, yyparsing  673 "java token"),
      (674, yyparsing  674 "java token"),
      (675, yyparsing  675 "java token"),
      (676, yyparsing  676 "java token"),
      (677, yyparsing  677 "java token"),
      (678, yyparsing  678 "java token"),
      (679, yyparsing  679 "java token"),
      (680, yyparsing  680 "java token"),
      (681, yyparsing  681 "java token"),
      (682, yyparsing  682 "java token"),
      (683, yyexpect 683(yyfromCh '}')),
      (684, yyparsing  684 "java tokens"),
      (685, yyparsing  685 "a type variable"),
      (686, yyexpect 686(yyfromCh ')')),
      (687, yyparsing  687 "a type variable"),
      (688, yyparsing  688 "a type kind"),
      (689, yyparsing  689 "a field specification"),
      (690, yyparsing  690 "a field specification"),
      (691, yyexpect 691(yyfromId VARID)),
      (692, yyexpect 692(yyfromId VARID)),
      (693, yyparsing  693 "a field specification"),
      (694, yyexpect 694(yyfromId DCOLON)),
      (695, yyparsing  695 "field specifications"),
      (696, yyparsing  696 "a field specification"),
      (697, yyparsing  697 "a field specification"),
      (698, yyparsing  698 "a variant of an algebraic datatype"),
      (699, yyparsing  699 "constructor fields"),
      (700, yyparsing  700 "constructor fields"),
      (701, yyparsing  701 "a non function type"),
      (702, yyparsing  702 "a list of types separated by '|'"),
      (703, yyparsing  703 "a non function type")];
    sub12 = [      (704, yyparsing  704 "case alternative"),
      (705, yyparsing  705 "list of case alternatives"),
      (706, yyparsing  706 "a list of member imports"),
      (707, yyparsing  707 "java tokens"),
      (708, yyexpect 708(yyfromCh '}')),
      (709, yyparsing  709 "java code"),
      (710, yyparsing  710 "java tokens"),
      (711, yyparsing  711 "a type kind"),
      (712, yyparsing  712 "a type kind"),
      (713, yyparsing  713 "a field specification"),
      (714, yyparsing  714 "a field specification"),
      (715, yyparsing  715 "a field specification"),
      (716, yyparsing  716 "a field specification"),
      (717, yyparsing  717 "a constructor field"),
      (718, yyparsing  718 "field specifications"),
      (719, yyparsing  719 "constructor fields"),
      (720, yyparsing  720 "constructor fields"),
      (721, yyparsing  721 "a list of types separated by '|'"),
      (722, yyparsing  722 "java tokens"),
      (723, yyparsing  723 "java tokens"),
      (724, yyparsing  724 "a constructor field"),
      (725, yyparsing  725 "field specifications"),
      (726, yyparsing  726 "java tokens")];
      in sub1 `seq` sub2 `seq` sub3 `seq` sub4 `seq` sub5 `seq` sub6 `seq` sub7 `seq` sub8 `seq` sub9 `seq` sub10 `seq` sub11 `seq` sub12 `seq` arrayFromIndexList (sub1 ++ sub2 ++ sub3 ++ sub4 ++ sub5 ++ sub6 ++ sub7 ++ sub8 ++ sub9 ++ sub10 ++ sub11 ++ sub12);
private yyeacts = let 
    sub1 = [      (2, yyAccept),
      (4, (-19)),
      (5, (-17)),
      (10, (-169)),
      (11, (-12)),
      (13, (-174)),
      (14, (-175)),
      (15, (-172)),
      (16, (-170)),
      (17, (-171)),
      (18, (-173)),
      (19, (-15)),
      (21, (-20)),
      (24, (-183)),
      (26, (-114)),
      (38, (-347)),
      (39, (-348)),
      (49, (-351)),
      (50, (-350)),
      (51, (-353)),
      (52, (-354)),
      (53, (-355)),
      (54, (-356)),
      (55, (-349)),
      (56, (-357)),
      (57, (-352)),
      (61, (-192)),
      (62, (-191)),
      (64, (-426)),
      (66, (-26)),
      (67, (-29)),
      (68, (-30)),
      (69, (-31)),
      (70, (-39)),
      (71, (-116)),
      (72, (-36)),
      (73, (-37)),
      (74, (-38)),
      (75, (-115)),
      (76, (-117)),
      (77, (-118)),
      (78, (-119)),
      (79, (-120)),
      (80, (-124)),
      (81, (-125)),
      (82, (-126)),
      (83, (-203)),
      (84, (-424)),
      (85, (-427)),
      (90, (-210)),
      (91, (-338)),
      (94, (-425)),
      (95, (-400)),
      (96, (-396)),
      (97, (-401)),
      (98, (-402)),
      (99, (-404)),
      (101, (-410)),
      (102, (-23)),
      (107, (-14)),
      (109, (-21)),
      (110, (-184)),
      (111, (-182)),
      (113, (-185))];
    sub2 = [      (114, (-179)),
      (115, (-142)),
      (116, (-193)),
      (117, (-195)),
      (118, (-194)),
      (119, (-168)),
      (121, (-190)),
      (122, (-213)),
      (124, (-214)),
      (125, (-212)),
      (126, (-211)),
      (130, (-293)),
      (134, (-268)),
      (135, (-338)),
      (138, (-276)),
      (139, (-279)),
      (140, (-338)),
      (141, (-35)),
      (143, (-180)),
      (146, (-388)),
      (148, (-281)),
      (152, (-32)),
      (153, (-33)),
      (154, (-34)),
      (155, (-209)),
      (156, (-395)),
      (158, (-430)),
      (165, (-441)),
      (170, (-3)),
      (171, (-27)),
      (173, (-345)),
      (175, (-405)),
      (176, (-197)),
      (177, (-198)),
      (178, (-196)),
      (179, (-199)),
      (180, (-201)),
      (184, (-282)),
      (187, (-344)),
      (188, (-376)),
      (191, (-403)),
      (195, (-1)),
      (197, (-25)),
      (198, (-13)),
      (199, (-181)),
      (200, (-178)),
      (202, (-142)),
      (203, (-142)),
      (205, (-139)),
      (212, (-5)),
      (213, (-6)),
      (215, (-7)),
      (216, (-11)),
      (218, (-215)),
      (219, (-4)),
      (220, (-216)),
      (221, (-217)),
      (223, (-220)),
      (225, (-250)),
      (235, (-264)),
      (237, (-271)),
      (242, (-255)),
      (243, (-272)),
      (244, (-244))];
    sub3 = [      (245, (-245)),
      (247, (-280)),
      (253, (-390)),
      (258, (-134)),
      (265, (-361)),
      (268, (-447)),
      (272, (-431)),
      (274, (-440)),
      (282, (-442)),
      (284, (-385)),
      (285, (-384)),
      (286, (-407)),
      (287, (-28)),
      (289, (-428)),
      (293, (-200)),
      (295, (-202)),
      (296, (-227)),
      (297, (-228)),
      (298, (-234)),
      (299, (-233)),
      (300, (-243)),
      (301, (-319)),
      (302, (-208)),
      (307, (-343)),
      (308, (-377)),
      (309, (-393)),
      (310, (-394)),
      (311, (-412)),
      (314, (-413)),
      (315, (-414)),
      (322, (-189)),
      (324, (-188)),
      (325, (-142)),
      (326, (-141)),
      (327, (-146)),
      (331, (-144)),
      (335, (-150)),
      (336, (-153)),
      (337, (-154)),
      (338, (-155)),
      (340, (-42)),
      (341, (-237)),
      (342, (-236)),
      (345, (-206)),
      (346, (-204)),
      (347, (-205)),
      (349, (-10)),
      (351, (-288)),
      (352, (-239)),
      (354, (-218)),
      (355, (-223)),
      (356, (-224)),
      (357, (-226)),
      (361, (-310)),
      (368, (-295)),
      (369, (-300)),
      (370, (-303)),
      (371, (-309)),
      (373, (-297)),
      (374, (-284)),
      (377, (-292)),
      (378, (-298)),
      (381, (-269)),
      (384, (-277))];
    sub4 = [      (387, (-257)),
      (390, (-256)),
      (395, (-336)),
      (397, (-434)),
      (398, (-433)),
      (399, (-432)),
      (400, (-389)),
      (402, (-387)),
      (410, (-411)),
      (411, (-435)),
      (416, (-437)),
      (417, (-436)),
      (418, (-460)),
      (421, (-443)),
      (423, (-386)),
      (424, (-341)),
      (427, (-429)),
      (432, (-320)),
      (436, (-339)),
      (438, (-127)),
      (441, (-133)),
      (443, (-359)),
      (444, (-360)),
      (452, (-418)),
      (454, (-2)),
      (456, (-187)),
      (457, (-22)),
      (459, (-140)),
      (462, (-158)),
      (463, (-145)),
      (465, (-165)),
      (466, (-166)),
      (467, (-167)),
      (468, (-157)),
      (471, (-44)),
      (473, (-40)),
      (474, (-8)),
      (475, (-9)),
      (477, (-287)),
      (487, (-318)),
      (488, (-312)),
      (489, (-313)),
      (490, (-315)),
      (491, (-302)),
      (492, (-305)),
      (493, (-306)),
      (494, (-304)),
      (495, (-308)),
      (496, (-307)),
      (497, (-301)),
      (498, (-294)),
      (499, (-283)),
      (500, (-285)),
      (501, (-289)),
      (504, (-291)),
      (505, (-267)),
      (506, (-338)),
      (507, (-275)),
      (508, (-259)),
      (509, (-246)),
      (512, (-258)),
      (513, (-249)),
      (514, (-278)),
      (515, (-337))];
    sub5 = [      (516, (-392)),
      (519, (-358)),
      (523, (-138)),
      (526, (-371)),
      (527, (-362)),
      (528, (-369)),
      (530, (-439)),
      (531, (-438)),
      (533, (-445)),
      (534, (-444)),
      (535, (-342)),
      (536, (-457)),
      (537, (-449)),
      (538, (-231)),
      (539, (-230)),
      (541, (-234)),
      (542, (-235)),
      (543, (-232)),
      (544, (-128)),
      (545, (-129)),
      (546, (-130)),
      (547, (-132)),
      (548, (-340)),
      (550, (-373)),
      (551, (-375)),
      (555, (-422)),
      (556, (-423)),
      (557, (-417)),
      (558, (-454)),
      (559, (-415)),
      (560, (-416)),
      (561, (-455)),
      (563, (-452)),
      (564, (-186)),
      (565, (-177)),
      (567, (-152)),
      (571, (-149)),
      (572, (-143)),
      (573, (-238)),
      (575, (-240)),
      (576, (-222)),
      (577, (-225)),
      (579, (-262)),
      (583, (-253)),
      (584, (-254)),
      (588, (-317)),
      (589, (-316)),
      (590, (-314)),
      (591, (-286)),
      (592, (-299)),
      (593, (-290)),
      (594, (-270)),
      (598, (-391)),
      (599, (-397)),
      (600, (-379)),
      (603, (-380)),
      (604, (-398)),
      (605, (-399)),
      (607, (-463)),
      (608, (-365)),
      (609, (-229)),
      (610, (-123)),
      (611, (-421)),
      (612, (-419))];
    sub6 = [      (613, (-420)),
      (616, (-161)),
      (617, (-151)),
      (618, (-160)),
      (620, (-47)),
      (621, (-48)),
      (622, (-49)),
      (623, (-52)),
      (624, (-50)),
      (625, (-51)),
      (626, (-53)),
      (627, (-54)),
      (628, (-55)),
      (629, (-56)),
      (630, (-57)),
      (631, (-58)),
      (632, (-59)),
      (633, (-60)),
      (634, (-61)),
      (635, (-62)),
      (636, (-63)),
      (637, (-64)),
      (638, (-65)),
      (639, (-66)),
      (640, (-67)),
      (641, (-68)),
      (642, (-69)),
      (643, (-70)),
      (644, (-71)),
      (645, (-72)),
      (646, (-73)),
      (647, (-74)),
      (648, (-75)),
      (649, (-76)),
      (650, (-77)),
      (651, (-78)),
      (652, (-79)),
      (653, (-80)),
      (654, (-81)),
      (655, (-82)),
      (656, (-83)),
      (657, (-84)),
      (658, (-85)),
      (659, (-86)),
      (660, (-87)),
      (661, (-88)),
      (662, (-89)),
      (663, (-90)),
      (664, (-91)),
      (665, (-92)),
      (666, (-93)),
      (667, (-94)),
      (668, (-103)),
      (669, (-104)),
      (671, (-46)),
      (672, (-101)),
      (673, (-99)),
      (674, (-100)),
      (675, (-95)),
      (676, (-96)),
      (677, (-97)),
      (678, (-98)),
      (679, (-102)),
      (680, (-105))];
    sub7 = [      (681, (-106)),
      (682, (-107)),
      (685, (-252)),
      (687, (-251)),
      (693, (-335)),
      (696, (-329)),
      (697, (-332)),
      (698, (-311)),
      (701, (-247)),
      (703, (-248)),
      (704, (-378)),
      (705, (-382)),
      (706, (-164)),
      (709, (-45)),
      (710, (-109)),
      (711, (-263)),
      (712, (-260)),
      (713, (-331)),
      (714, (-330)),
      (715, (-334)),
      (716, (-333)),
      (719, (-325)),
      (720, (-324)),
      (721, (-242)),
      (722, (-113)),
      (724, (-326)),
      (725, (-328)),
      (726, (-111))];
      in sub1 `seq` sub2 `seq` sub3 `seq` sub4 `seq` sub5 `seq` sub6 `seq` sub7 `seq` arrayFromIndexList (sub1 ++ sub2 ++ sub3 ++ sub4 ++ sub5 ++ sub6 ++ sub7);


decodeArr s1 s2 = arrayFromIndexList (zip (un s1) (un s2))
    where {
        un :: String -> [Int];
        un s = (map ord . unpacked) s }
;
private yygo0 = decodeArr "\u0001\u0002\u0003\u0010\u0011\u0012\u0013" "\u0002\u0002\u0002\u0004\u0004\u0003\u0003";
private yygo1 = decodeArr "\u0010\u0011" "\u0005\u0005";
private yygo3 = decodeArr "\u0014\u0015\u0016" "\t\t\t";
private yygo6 = decodeArr "\f\r\u000e\u000f©ª«¬­®¯" "\u0013\u0013\u0013\u0015\u0014\u0014\u0014\u0014\u0014\u0014\u0014";
private yygo8 = decodeArr "\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'(rstuvwx|}~\u008b\u008c\u008d¨²³´µ¶·¿ÀÁÂÃÉÊËÌÍÎÏÐÑÒâĎďĘęĚġĢģĤĥĦħŐőŗŘřŚśŜŝŞşŠšŢţŤťƀƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "AAABBBEEEEDDDDJCFFFFFFOOOHHHSTTTUUUVVWWWIPYYYYXXQQZLLMNG[[[[[[[KKRRR\\^^^^^^^^^^^_]]]]`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo9 = decodeArr "\u0017\u0018\u0019" "jii";
private yygo12 = decodeArr "\f\r\u000e©ª«¬­®¯" "kkk\u0014\u0014\u0014\u0014\u0014\u0014\u0014";
private yygo22 = decodeArr "\f\r\u000e\u000f©ª«¬­®¯" "\u0013\u0013\u0013m\u0014\u0014\u0014\u0014\u0014\u0014\u0014";
private yygo25 = decodeArr "¸¹¿À" "rrqq";
private yygo27 = decodeArr "\f\r\u000e\u000f©ª«¬­®¯" "\u0013\u0013\u0013s\u0014\u0014\u0014\u0014\u0014\u0014\u0014";
private yygo31 = decodeArr "¨¾¿ÀËÌÍÎÓÔÕÖÚÛÜÝ" "S|}}~~~~\u007f\u007f\u007f\u007f\u0080\u0080\u0080\u0080";
private yygo34 = decodeArr "µ¶·ĈČč" "\u0085\u0085\u0085\u0086\u0087\u0087";
private yygo35 = decodeArr "µ¶·ĐĔĕĖė" "\u0089\u0089\u0089\u008a\u008b\u008b\u008c\u008c";
private yygo36 = decodeArr "ĚġĢģĤĥĦħ" "\u008d[[[[[[[";
private yygo40 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťƀƃƄƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^_\u0091\u0091\u0092\u0092\u0092\u0092`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo41 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťƀƃƄƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^_\u0093\u0093\u0092\u0092\u0092\u0092`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo42 = decodeArr "µ¶·ĐĔĕĖė" "\u0089\u0089\u0089\u008a\u008b\u008b\u0094\u0094";
private yygo45 = decodeArr "stuvwx|}~¨²³´µ¶·¿ÀÊËÌÍÎÏÐÑÒâĎďĘęĚġĢģĤĥĦħŐőŗŘřŚśŜŝŞşŠšŢţŤťƀƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "\u0098\u0098\u0098\u0098\u0098\u0098OOOSTTTUUUVVPYYYYXXQQZLLMNG[[[[[[[KKRRR\\^^^^^^^^^^^_]]]]`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo46 = decodeArr "stuvwx|}~¨²³´µ¶·¿ÀÊËÌÍÎÏÐÑÒâĎďĘęĚġĢģĤĥĦħŐőŗŘřŚśŜŝŞşŠšŢţŤťƀƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "\u0099\u0099\u0099\u0099\u0099\u0099OOOSTTTUUUVVPYYYYXXQQZLLMNG[[[[[[[KKRRR\\^^^^^^^^^^^_]]]]`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo47 = decodeArr "stuvwx|}~¨²³´µ¶·¿ÀÊËÌÍÎÏÐÑÒâĎďĘęĚġĢģĤĥĦħŐőŗŘřŚśŜŝŞşŠšŢţŤťƀƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "\u009a\u009a\u009a\u009a\u009a\u009aOOOSTTTUUUVVPYYYYXXQQZLLMNG[[[[[[[KKRRR\\^^^^^^^^^^^_]]]]`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo48 = decodeArr "â" "\u009b";
private yygo58 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťƀƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^_\u009c\u009c\u009c\u009c\u009caabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo59 = decodeArr "²³´µ¶·¾¿ÀśŜŝŞşŠšŢţŤťƀƃƄƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽƾƿ" "TTTUUU ¡¡^^^^^^^^^^^_££¤¤¤¤`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee¢¢";
private yygo60 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťƀƃƄƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽǋǌǍ" "TTTUUUVV^^^^^^^^^^^_¦¦\u0092\u0092\u0092\u0092`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee§§§";
private yygo63 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťƔƕƖƗƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^©©¨¨ddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo82 = decodeArr "ŕŖ" "­­";
private yygo86 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^¯¯ddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo87 = decodeArr "¾ÄÅÆÇÈ" "²³³³´´";
private yygo91 = decodeArr "ŒœŔ" "¸¸¸";
private yygo92 = decodeArr "ŷŸŹ" "¼»»";
private yygo97 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^¿¿ddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo104 = decodeArr "\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'(rstuvwx|}~\u008b\u008c\u008d¨²³´µ¶·¿ÀÁÂÃÉÊËÌÍÎÏÐÑÒâĎďĘęĚġĢģĤĥĦħŐőŗŘřŚśŜŝŞşŠšŢţŤťƀƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "ÃÃÃBBBEEEEDDDDJCFFFFFFOOOHHHSTTTUUUVVWWWIPYYYYXXQQZLLMNG[[[[[[[KKRRR\\^^^^^^^^^^^_]]]]`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo106 = decodeArr "\u0017\u0018\u0019" "jÅÅ";
private yygo108 = decodeArr "\f\r\u000e©ª«¬­®¯" "ÆÆÆ\u0014\u0014\u0014\u0014\u0014\u0014\u0014";
private yygo112 = decodeArr "¸¹¿À" "ÈÈqq";
private yygo115 = decodeArr "\u008e\u008f\u0090\u0091\u0092¨" "ÍÍÍÍÍÎ";
private yygo120 = decodeArr ")*" "ÐÐ";
private yygo123 = decodeArr "¾¿À" "ÒÓÓ";
private yygo127 = decodeArr "\u0004\u0005\u0006\u0007\b\t\n\u000b¾¿À×ØÙğĠ" "ÚÛÛÛÛÛÛÛÜÝÝÞÞÞßß";
private yygo129 = decodeArr "úûüýþĨĩ" "åååååää";
private yygo130 = decodeArr "úûüýþĨĩ" "åååååçç";
private yygo132 = decodeArr "µ¶·ĈĉĊċ" "\u0085\u0085\u0085éêêê";
private yygo133 = decodeArr "úûüýþ" "ëëëëë";
private yygo135 = decodeArr "ŒœŔ" "ííí";
private yygo136 = decodeArr "µ¶·ĐđĒē" "\u0089\u0089\u0089îïïï";
private yygo137 = decodeArr "µ¶·ôõö÷øùúûüýþÿĀāĂă" "òòòóóóóóóôôôôôõõõõõ";
private yygo140 = decodeArr "ŒœŔ" "÷÷÷";
private yygo142 = decodeArr "úûüýþĨĩ" "åååååùù";
private yygo144 = decodeArr "²³´µ¶·¾¿ÀśŜŝŞşŠšŢţŤťƀƃƄƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽƾƿ" "TTTUUUûüü^^^^^^^^^^^_££¤¤¤¤`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee¢¢";
private yygo145 = decodeArr "ƅƆ" "ÿÿ";
private yygo149 = decodeArr "\u0086\u0087\u0088\u0089\u008a¨²³´µ¶·¿ÀÊËÌÍÎÏÐŗŘřŚśŜŝŞşŠšŢţŤťƀƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "ĄĄąąąSTTTUUUVVĂYYYYXXăăă\\^^^^^^^^^^^_]]]]`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo150 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťũŪūůŰűŲųƀƃƄƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^ĈĈĈĊĊĊĉĉ_ćć\u0092\u0092\u0092\u0092`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo151 = decodeArr "¨¾¿ÀËÌÍÎÓÔÕÖÚÛÜÝ" "S|}}~~~~\u007f\u007f\u007f\u007f\u0080\u0080\u0080\u0080";
private yygo157 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťƀƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^_\u009c\u009c\u009c\u009c\u009caabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo159 = decodeArr "ƾƿ" "ČČ";
private yygo160 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťƀƃƄƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^_ĎĎ\u0092\u0092\u0092\u0092`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo161 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^¯¯ddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo164 = decodeArr "¾" "Ė";
private yygo168 = decodeArr "ƀƁƂ" "Ĝĝĝ";
private yygo169 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťƔƕƖƗƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^©©ĞĞddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo171 = decodeArr "\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'(rstuvwx|}~\u008b\u008c\u008d¨²³´µ¶·¿ÀÁÂÃÉÊËÌÍÎÏÐÑÒâĎďĘęĚġĢģĤĥĦħŐőŗŘřŚśŜŝŞşŠšŢţŤťƀƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "ğğğBBBEEEEDDDDJCFFFFFFOOOHHHSTTTUUUVVWWWIPYYYYXXQQZLLMNG[[[[[[[KKRRR\\^^^^^^^^^^^_]]]]`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo174 = decodeArr "¨ǀǁǂǉǊ" "ĢģģģĤĤ";
private yygo179 = decodeArr "¾ÄÅÆÇÈ" "²³³³ĥĥ";
private yygo181 = decodeArr "µ¶·ãäåèéêëóôõö÷øùúûüýþÿĀāĂăĿŀ" "òòòħħĨĩĩīīĪĭĭĭĭĭĭôôôôôõõõõõĬĬ";
private yygo182 = decodeArr "¨ËÌÍÎÏÐ" "SYYYYĮĮ";
private yygo185 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťŲųŴŵŶƀƃƄƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^ııĲĲĲ_İİ\u0092\u0092\u0092\u0092`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo186 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťƀƃƄƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^_ĳĳ\u0092\u0092\u0092\u0092`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo188 = decodeArr "ŷŸŹ" "¼ĴĴ";
private yygo189 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťƀƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^_ĵĵĵĵ`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo190 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťƀƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^_ĶĶĶĶ`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo192 = decodeArr "¾¿À" "ĺĻĻ";
private yygo193 = decodeArr "ǃǄǅǆǇǈ" "ĽĽĽľľľ";
private yygo194 = decodeArr "\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'(rstuvwx|}~\u008b\u008c\u008d¨²³´µ¶·¿ÀÁÂÃÉÊËÌÍÎÏÐÑÒâĎďĘęĚġĢģĤĥĦħŐőŗŘřŚśŜŝŞşŠšŢţŤťƀƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "ĿĿĿBBBEEEEDDDDJCFFFFFFOOOHHHSTTTUUUVVWWWIPYYYYXXQQZLLMNG[[[[[[[KKRRR\\^^^^^^^^^^^_]]]]`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo196 = decodeArr "°±¸¹º»¼½¾¿À" "ŁŁńńŃŃŃŃłqq";
private yygo202 = decodeArr "\u008e\u008f\u0090\u0091\u0092¨" "ņņņņņÎ";
private yygo203 = decodeArr "\u008e\u008f\u0090\u0091\u0092¨" "ŇŇŇŇŇÎ";
private yygo204 = decodeArr "\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009a\u009b\u009c\u009d\u009e²³´µ¶·¾¿À" "ŌŌŌŎŎŎŎŎŎōōōŏŏŏŐŐŐőŒŒ";
private yygo207 = decodeArr "µ¶·åìíîóôõö÷øùúûüýþÿĀāĂăĿŀ" "òòòŕŔŔŔŖĭĭĭĭĭĭôôôôôõõõõõĬĬ";
private yygo208 = decodeArr "+," "ŘŘ";
private yygo214 = decodeArr "\u0005\u0006\u0007\b\t\n\u000b" "ŝŝŝŝŝŝŝ";
private yygo217 = decodeArr "µ¶·åìíîïðóôõö÷øùúûüýþÿĀāĂăĿŀ" "òòòŕŠŠŠššŖĭĭĭĭĭĭôôôôôõõõõõĬĬ";
private yygo222 = decodeArr "ğĠ" "ŢŢ";
private yygo224 = decodeArr "µ¶·Þßàáãäåèéêëóôõö÷øùúûüýþÿĀāĂăĿŀ" "òòòŤŤťťţţĨĩĩīīĪĭĭĭĭĭĭôôôôôõõõõõĬĬ";
private yygo227 = decodeArr "ĬĭĮįİıĲĳĴĵĶķĸ" "ŰŰŰűűűűŲŲŲųųų";
private yygo229 = decodeArr "úûüýþĨĩ" "åååååŵŵ";
private yygo230 = decodeArr "ěĜĪīĬĭĮįİıĲĳĴĵĶķĸ" "ŸŸŹŹźźźűűűűŲŲŲųųų";
private yygo240 = decodeArr "µ¶·åìíîóôõö÷øùúûüýþÿĀāĂăĿŀƾƿ" "òòòŕƄƄƄŖĭĭĭĭĭĭôôôôôõõõõõĬĬƅƅ";
private yygo241 = decodeArr "µ¶·åìíîóôõö÷øùúûüýþÿĀāĂăĿŀ" "òòòŕƇƇƇŖĭĭĭĭĭĭôôôôôõõõõõĬĬ";
private yygo246 = decodeArr "µ¶·ÿĀāĂă" "òòòƊƊƊƊƊ";
private yygo248 = decodeArr "µ¶·ãäåèéêëóôõö÷øùúûüýþÿĀāĂăĿŀ" "òòòƋƋĨĩĩīīĪĭĭĭĭĭĭôôôôôõõõõõĬĬ";
private yygo250 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťƀƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^_\u009c\u009c\u009c\u009c\u009caabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo251 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťƀƃƄƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^_ĎĎ\u0092\u0092\u0092\u0092`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo252 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^¯¯ddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo255 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťƀƃƄƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^_ƑƑ\u0092\u0092\u0092\u0092`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo256 = decodeArr "µ¶·ãäåèéêëóôõö÷øùúûüýþÿĀāĂăĿŀ" "òòòƒƒĨĩĩīīĪĭĭĭĭĭĭôôôôôõõõõõĬĬ";
private yygo259 = decodeArr "ŕŖ" "­­";
private yygo273 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťƀƃƄƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽǎǏǐ" "TTTUUUVV^^^^^^^^^^^_ƜƜ\u0092\u0092\u0092\u0092`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeeeƝƝƝ";
private yygo275 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťƀƃƄƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽǋǌǍ" "TTTUUUVV^^^^^^^^^^^_ƞƞ\u0092\u0092\u0092\u0092`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeeeƟƟƟ";
private yygo276 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťƀƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^_ĵĵĵĵ`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo277 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťƀƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^_ĶĶĶĶ`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo279 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťƀƃƄƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽǋǌǍ" "TTTUUUVV^^^^^^^^^^^_ƞƞ\u0092\u0092\u0092\u0092`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeeeƢƢƢ";
private yygo280 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťũŪūŬŭŮŲųƀƃƄƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^ƣƣƣƤƤƤĉĉ_ćć\u0092\u0092\u0092\u0092`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo281 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťƀƃƄƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^_ƦƦ\u0092\u0092\u0092\u0092`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo283 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťƀƃƄƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^_ƧƧ\u0092\u0092\u0092\u0092`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo288 = decodeArr "\u0086\u0087\u0088\u0089\u008a¨²³´µ¶·¿ÀÊËÌÍÎÏÐŗŘřŚśŜŝŞşŠšŢţŤťƀƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "ĄĄƩƩƩSTTTUUUVVĂYYYYXXăăă\\^^^^^^^^^^^_]]]]`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo294 = decodeArr "úûüýþĨĩ" "åååååƭƭ";
private yygo301 = decodeArr "µ¶·ôõö÷øùúûüýþÿĀāĂăĿŀ" "òòòĭĭĭĭĭĭôôôôôõõõõõưư";
private yygo303 = decodeArr "ryz{|}~\u007f\u0080\u0081\u0082\u0083\u0084\u0085¨²³´µ¶·¿ÀÊËÌÍÎÏÐÑÒâŗŘřŚśŜŝŞşŠšŢţŤťƀƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "ƵƷƷƷƶƶƶƹƹƹƹƸƸƸSTTTUUUVVPYYYYXXQQZRRR\\^^^^^^^^^^^_]]]]`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo306 = decodeArr "ŧŨ" "ƽƽ";
private yygo312 = decodeArr "ǃǄǅǆǇǈ" "ƿƿƿľľľ";
private yygo313 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťƀƃƄƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^_ǀǀ\u0092\u0092\u0092\u0092`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo320 = decodeArr "¸¹¿À" "ǈǈqq";
private yygo325 = decodeArr "\u008e\u008f\u0090\u0091\u0092¨" "ǋǋǋǋǋÎ";
private yygo329 = decodeArr "¸¹¿À" "rrqq";
private yygo330 = decodeArr "\u0096\u0097\u0098\u0099\u009a\u009b\u009c\u009d\u009e²³´µ¶·¾¿À" "ŎŎŎŎŎŎǎǎǎŏŏŏŐŐŐőŒŒ";
private yygo334 = decodeArr "¥¦§¾" "ǔǔǔǓ";
private yygo339 = decodeArr "\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009a\u009b\u009c\u009d\u009e²³´µ¶·¾¿À" "ǕǕǕŎŎŎŎŎŎōōōŏŏŏŐŐŐőŒŒ";
private yygo343 = decodeArr "µ¶·åìíîïðóôõö÷øùúûüýþÿĀāĂăĿŀ" "òòòŕŠŠŠǗǗŖĭĭĭĭĭĭôôôôôõõõõõĬĬ";
private yygo344 = decodeArr "-." "ǙǙ";
private yygo348 = decodeArr "\u0005\u0006\u0007\b\t\n\u000b" "ǚǚǚǚǚǚǚ";
private yygo350 = decodeArr "\u0005\u0006\u0007\b\t\n\u000b" "ǛǛǛǛǛǛǛ";
private yygo359 = decodeArr "µ¶·åìíîïðóôõö÷øùúûüýþÿĀāĂăĿŀ" "òòòŕŠŠŠǢǢŖĭĭĭĭĭĭôôôôôõõõõõĬĬ";
private yygo360 = decodeArr "µ¶·óôõö÷øùúûüýþÿĀāĂăĿŀ" "òòòǣĭĭĭĭĭĭôôôôôõõõõõĬĬ";
private yygo361 = decodeArr "µ¶·ôõö÷øùúûüýþÿĀāĂăĹĺĻļĽľ" "òòòǧǧǧǧǧǧôôôôôõõõõõǨǨǩǩǩǪ";
private yygo362 = decodeArr "įİıĲĳĴĵĶķĸ" "ǫǫǫǫŲŲŲųųų";
private yygo363 = decodeArr "ĳĴĵĶķĸ" "ǬǬǬųųų";
private yygo364 = decodeArr "ĳĴĵĶķĸ" "ǭǭǭųųų";
private yygo365 = decodeArr "ĳĴĵĶķĸ" "ǮǮǮųųų";
private yygo366 = decodeArr "Ķķĸ" "ǯǯǯ";
private yygo367 = decodeArr "Ķķĸ" "ǰǰǰ";
private yygo372 = decodeArr "ĬĭĮįİıĲĳĴĵĶķĸ" "ǲǲǲűűűűŲŲŲųųų";
private yygo376 = decodeArr "\u0004\u0005\u0006\u0007\b\t\n\u000bĝĞ" "ǴÛÛÛÛÛÛÛǵǵ";
private yygo379 = decodeArr "ěĜĪīĬĭĮįİıĲĳĴĵĶķĸ" "ǷǷǸǸźźźűűűűŲŲŲųųų";
private yygo380 = decodeArr "µ¶·ĈĉĊċ" "\u0085\u0085\u0085éǹǹǹ";
private yygo382 = decodeArr "úûüýþ" "ǺǺǺǺǺ";
private yygo383 = decodeArr "µ¶·ĐđĒē" "\u0089\u0089\u0089îǻǻǻ";
private yygo392 = decodeArr "ƾƿ" "ƅƅ";
private yygo394 = decodeArr "µ¶·ôõö÷øùúûüýþÿĀāĂă" "òòòȂȂȂȂȂȂôôôôôõõõõõ";
private yygo396 = decodeArr "µ¶·ãäåèéêëóôõö÷øùúûüýþÿĀāĂăĿŀ" "òòòȃȃĨĩĩīīĪĭĭĭĭĭĭôôôôôõõõõõĬĬ";
private yygo401 = decodeArr "Ƈƈ" "ȆȆ";
private yygo403 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťŦźŻżŽžſƀƃƄƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^ȈȉȉȉȊȊȊ_ȇȇ\u0092\u0092\u0092\u0092`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo404 = decodeArr "\u0086\u0087\u0088\u0089\u008a¨²³´µ¶·¿ÀÊËÌÍÎÏÐŗŘřŚśŜŝŞşŠšŢţŤťƀƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "ĄĄȋȋȋSTTTUUUVVĂYYYYXXăăă\\^^^^^^^^^^^_]]]]`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo406 = decodeArr "\u0086\u0087\u0088\u0089\u008a¨²³´µ¶·¿ÀÊËÌÍÎÏÐŗŘřŚśŜŝŞşŠšŢţŤťƀƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "ĄĄȍȍȍSTTTUUUVVĂYYYYXXăăă\\^^^^^^^^^^^_]]]]`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo407 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťƀƃƄƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^_ȎȎ\u0092\u0092\u0092\u0092`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo408 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťƀƃƄƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^_ȏȏ\u0092\u0092\u0092\u0092`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo409 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťũŪūůŰűŲųƀƃƄƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^ĈĈĈȐȐȐĉĉ_ćć\u0092\u0092\u0092\u0092`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo426 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťƀƃƄƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^_ȘȘ\u0092\u0092\u0092\u0092`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo428 = decodeArr "¨ǀǁǂǉǊ" "ĢșșșĤĤ";
private yygo429 = decodeArr "æç" "ȜȜ";
private yygo430 = decodeArr "µ¶·êëóôõö÷øùúûüýþÿĀāĂăĿŀ" "òòòȞȞȝĭĭĭĭĭĭôôôôôõõõõõĬĬ";
private yygo431 = decodeArr "µ¶·êëóôõö÷øùúûüýþÿĀāĂăĿŀ" "òòòȟȟȝĭĭĭĭĭĭôôôôôõõõõõĬĬ";
private yygo433 = decodeArr "|}~¨²³´µ¶·¿ÀÊËÌÍÎÏÐÑÒâŗŘřŚśŜŝŞşŠšŢţŤťƀƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "ȠȠȠSTTTUUUVVPYYYYXXQQZRRR\\^^^^^^^^^^^_]]]]`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo434 = decodeArr "|}~¨²³´µ¶·¿ÀÊËÌÍÎÏÐÑÒâŗŘřŚśŜŝŞşŠšŢţŤťƀƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "ȡȡȡSTTTUUUVVPYYYYXXQQZRRR\\^^^^^^^^^^^_]]]]`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo435 = decodeArr "|}~¨²³´µ¶·¿ÀÊËÌÍÎÏÐÑÒâŗŘřŚśŜŝŞşŠšŢţŤťƀƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "ȢȢȢSTTTUUUVVPYYYYXXQQZRRR\\^^^^^^^^^^^_]]]]`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo437 = decodeArr "r|}~\u007f\u0080\u0081\u0082\u0083\u0084\u0085¨²³´µ¶·¿ÀÊËÌÍÎÏÐÑÒâŗŘřŚśŜŝŞşŠšŢţŤťƀƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "ƵƶƶƶƹƹƹƹȣȣȣSTTTUUUVVPYYYYXXQQZRRR\\^^^^^^^^^^^_]]]]`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo442 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťŲųŴŵŶƀƃƄƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^ııȦȦȦ_İİ\u0092\u0092\u0092\u0092`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo445 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťƀƃƄƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^_ȧȧ\u0092\u0092\u0092\u0092`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo449 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťƀƃƄƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^_ȮȮ\u0092\u0092\u0092\u0092`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo451 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťƀƃƄƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^_ȱȱ\u0092\u0092\u0092\u0092`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo453 = decodeArr "ǃǄǅǆǇǈ" "ȳȳȳľľľ";
private yygo455 = decodeArr "¸¹¿À" "ȴȴqq";
private yygo458 = decodeArr "°±¸¹º»¼½¾¿À" "ȵȵńńŃŃŃŃłqq";
private yygo460 = decodeArr "\u009f ¡¢£¤¥¦§¾" "ȺȺȺȸȸȸȹȹȹǓ";
private yygo461 = decodeArr "¸¹¿À" "ÈÈqq";
private yygo464 = decodeArr "\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009a\u009b\u009c\u009d\u009e²³´µ¶·¾¿À" "ȻȻȻŎŎŎŎŎŎōōōŏŏŏŐŐŐőŒŒ";
private yygo470 = decodeArr "µ¶·åìíîóôõö÷øùúûüýþÿĀāĂăĿŀ" "òòòŕȽȽȽŖĭĭĭĭĭĭôôôôôõõõõõĬĬ";
private yygo476 = decodeArr "µ¶·åìíîïðóôõö÷øùúûüýþÿĀāĂăĿŀ" "òòòŕŠŠŠȿȿŖĭĭĭĭĭĭôôôôôõõõõõĬĬ";
private yygo478 = decodeArr "µ¶·åìíîïðóôõö÷øùúûüýþÿĀāĂăĿŀ" "òòòŕŠŠŠɀɀŖĭĭĭĭĭĭôôôôôõõõõõĬĬ";
private yygo479 = decodeArr "µ¶·Þßàáãäåèéêëóôõö÷øùúûüýþÿĀāĂăĿŀ" "òòòŤŤɁɁţţĨĩĩīīĪĭĭĭĭĭĭôôôôôõõõõõĬĬ";
private yygo480 = decodeArr "µ¶·åìíîïðóôõö÷øùúûüýþÿĀāĂăĿŀ" "òòòŕŠŠŠɂɂŖĭĭĭĭĭĭôôôôôõõõõõĬĬ";
private yygo481 = decodeArr "ĄąĆć" "ɅɅɆɆ";
private yygo484 = decodeArr "\u0010\u0011\u0012\u0013ŁłŃńŅņ" "\u0004\u0004ɉɉɊɊɊɊɊɋ";
private yygo485 = decodeArr "µ¶·ôõö÷øùúûüýþÿĀāĂăľ" "òòòǧǧǧǧǧǧôôôôôõõõõõɌ";
private yygo486 = decodeArr "µ¶·ôõö÷øùúûüýþÿĀāĂăľ" "òòòǧǧǧǧǧǧôôôôôõõõõõɍ";
private yygo489 = decodeArr "µ¶·ôõö÷øùúûüýþÿĀāĂăĹĺĻļĽľ" "òòòǧǧǧǧǧǧôôôôôõõõõõɎɎǩǩǩǪ";
private yygo500 = decodeArr "ğĠ" "ɏɏ";
private yygo502 = decodeArr "ĪīĬĭĮįİıĲĳĴĵĶķĸ" "ɐɐźźźűűűűŲŲŲųųų";
private yygo503 = decodeArr "\u0004\u0005\u0006\u0007\b\t\n\u000bĝĞ" "ǴÛÛÛÛÛÛÛɑɑ";
private yygo506 = decodeArr "ŒœŔ" "ɒɒɒ";
private yygo510 = decodeArr "µ¶·åìíîïðóôõö÷øùúûüýþÿĀāĂăĿŀ" "òòòŕŠŠŠɓɓŖĭĭĭĭĭĭôôôôôõõõõõĬĬ";
private yygo511 = decodeArr "µ¶·åìíîñòóôõö÷øùúûüýþÿĀāĂăĿŀ" "òòòŕɔɔɔɕɕŖĭĭĭĭĭĭôôôôôõõõõõĬĬ";
private yygo518 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťƀƃƄƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^_ɗɗ\u0092\u0092\u0092\u0092`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo520 = decodeArr "ŧŨŷŸŹ" "əə¼ɘɘ";
private yygo521 = decodeArr "ŕŖ" "ɛɛ";
private yygo524 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťƀƃƄƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^_ɝɝ\u0092\u0092\u0092\u0092`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo529 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťƀƃƄƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽǎǏǐ" "TTTUUUVV^^^^^^^^^^^_ƜƜ\u0092\u0092\u0092\u0092`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeeeɟɟɟ";
private yygo532 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťũŪūŬŭŮŲųƀƃƄƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^ƣƣƣɠɠɠĉĉ_ćć\u0092\u0092\u0092\u0092`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo540 = decodeArr "µ¶·èéêëóôõö÷øùúûüýþÿĀāĂăĿŀ" "òòòɡɡīīĪĭĭĭĭĭĭôôôôôõõõõõĬĬ";
private yygo549 = decodeArr "ryz{|}~\u007f\u0080\u0081\u0082\u0083\u0084\u0085¨²³´µ¶·¿ÀÊËÌÍÎÏÐÑÒâŗŘřŚśŜŝŞşŠšŢţŤťƀƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "ƵɢɢɢƶƶƶƹƹƹƹƸƸƸSTTTUUUVVPYYYYXXQQZRRR\\^^^^^^^^^^^_]]]]`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo552 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťƀƃƄƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^_ȮȮ\u0092\u0092\u0092\u0092`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo554 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťƀƃƄƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^_ȱȱ\u0092\u0092\u0092\u0092`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo566 = decodeArr "\u009f ¡¥¦§¾" "ɨɨɨȹȹȹǓ";
private yygo569 = decodeArr "¥¦§¾" "ɪɪɪǓ";
private yygo574 = decodeArr "/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopq" "ʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʫʫʫʫʫʫ";
private yygo580 = decodeArr "ĄąĆć" "ʮʮɆɆ";
private yygo585 = decodeArr "¨ŇňŉŊŋŌōŎŏ" "ʵʶʶʷʷʷʸʸʸʹ";
private yygo601 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťƀƃƄƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^_ˀˀ\u0092\u0092\u0092\u0092`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo602 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťŦźŻżŽžſƀƃƄƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^Ȉȉȉȉˁˁˁ_ȇȇ\u0092\u0092\u0092\u0092`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo614 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťƀƃƄƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^_ȮȮ\u0092\u0092\u0092\u0092`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo615 = decodeArr "²³´µ¶·¿ÀśŜŝŞşŠšŢţŤťƀƃƄƉƊƋƌƍƎƏƐƑƒƓƔƕƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽ" "TTTUUUVV^^^^^^^^^^^_ȱȱ\u0092\u0092\u0092\u0092`````aabbddcccccccccccccceeeeeeeeeeeeeeeeeeeeee";
private yygo619 = decodeArr "\u009f ¡¢£¤¥¦§¾" "ȺȺȺ˂˂˂ȹȹȹǓ";
private yygo670 = decodeArr "/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopq" "ʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬ˄˄˄˄˄˄";
private yygo684 = decodeArr "/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopq" "ʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬˆˆˆˆˆˆ";
private yygo688 = decodeArr "ĄąĆć" "ˈˈɆɆ";
private yygo689 = decodeArr "¨ŌōŎŏ" "ʵˉˉˉʹ";
private yygo690 = decodeArr "¨ŌōŎŏ" "ʵˊˊˊʹ";
private yygo691 = decodeArr "¨ŏ" "ʵˋ";
private yygo692 = decodeArr "¨ŏ" "ʵˌ";
private yygo699 = decodeArr "\u0010\u0011\u0012\u0013ŁłŃńŅņ" "\u0004\u0004ɉɉˏˏˏˏˏɋ";
private yygo700 = decodeArr "\u0010\u0011\u0012\u0013ŁłŃńŅņ" "\u0004\u0004ɉɉːːːːːɋ";
private yygo702 = decodeArr "µ¶·åìíîñòóôõö÷øùúûüýþÿĀāĂăĿŀ" "òòòŕɔɔɔˑˑŖĭĭĭĭĭĭôôôôôõõõõõĬĬ";
private yygo707 = decodeArr "/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopq" "ʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬ˒˒˒˒˒˒";
private yygo717 = decodeArr "µ¶·ãäåèéêëóôõö÷øùúûüýþÿĀāĂăĿŀ" "òòò˔˔ĨĩĩīīĪĭĭĭĭĭĭôôôôôõõõõõĬĬ";
private yygo718 = decodeArr "¨ŇňŉŊŋŌōŎŏ" "ʵ˕˕ʷʷʷʸʸʸʹ";
private yygo723 = decodeArr "/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopq" "ʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬʬ˖˖˖˖˖˖";
private yygos = let 
    sub1 = [      (0, yygo0),
      (1, yygo1),
      (3, yygo3),
      (6, yygo6),
      (8, yygo8),
      (9, yygo9),
      (12, yygo12),
      (22, yygo22),
      (25, yygo25),
      (27, yygo27),
      (31, yygo31),
      (34, yygo34),
      (35, yygo35),
      (36, yygo36),
      (40, yygo40),
      (41, yygo41),
      (42, yygo42),
      (45, yygo45),
      (46, yygo46),
      (47, yygo47),
      (48, yygo48),
      (58, yygo58),
      (59, yygo59),
      (60, yygo60),
      (63, yygo63),
      (82, yygo82),
      (86, yygo86),
      (87, yygo87),
      (91, yygo91),
      (92, yygo92),
      (97, yygo97),
      (104, yygo104),
      (106, yygo106),
      (108, yygo108),
      (112, yygo112),
      (115, yygo115),
      (120, yygo120),
      (123, yygo123),
      (127, yygo127),
      (129, yygo129),
      (130, yygo130),
      (132, yygo132),
      (133, yygo133),
      (135, yygo135),
      (136, yygo136),
      (137, yygo137),
      (140, yygo140),
      (142, yygo142),
      (144, yygo144),
      (145, yygo145),
      (149, yygo149),
      (150, yygo150),
      (151, yygo151),
      (157, yygo157),
      (159, yygo159),
      (160, yygo160),
      (161, yygo161),
      (164, yygo164),
      (168, yygo168),
      (169, yygo169),
      (171, yygo171),
      (174, yygo174),
      (179, yygo179),
      (181, yygo181)];
    sub2 = [      (182, yygo182),
      (185, yygo185),
      (186, yygo186),
      (188, yygo188),
      (189, yygo189),
      (190, yygo190),
      (192, yygo192),
      (193, yygo193),
      (194, yygo194),
      (196, yygo196),
      (202, yygo202),
      (203, yygo203),
      (204, yygo204),
      (207, yygo207),
      (208, yygo208),
      (214, yygo214),
      (217, yygo217),
      (222, yygo222),
      (224, yygo224),
      (227, yygo227),
      (229, yygo229),
      (230, yygo230),
      (240, yygo240),
      (241, yygo241),
      (246, yygo246),
      (248, yygo248),
      (250, yygo250),
      (251, yygo251),
      (252, yygo252),
      (255, yygo255),
      (256, yygo256),
      (259, yygo259),
      (273, yygo273),
      (275, yygo275),
      (276, yygo276),
      (277, yygo277),
      (279, yygo279),
      (280, yygo280),
      (281, yygo281),
      (283, yygo283),
      (288, yygo288),
      (294, yygo294),
      (301, yygo301),
      (303, yygo303),
      (306, yygo306),
      (312, yygo312),
      (313, yygo313),
      (320, yygo320),
      (325, yygo325),
      (329, yygo329),
      (330, yygo330),
      (334, yygo334),
      (339, yygo339),
      (343, yygo343),
      (344, yygo344),
      (348, yygo348),
      (350, yygo350),
      (359, yygo359),
      (360, yygo360),
      (361, yygo361),
      (362, yygo362),
      (363, yygo363),
      (364, yygo364),
      (365, yygo365)];
    sub3 = [      (366, yygo366),
      (367, yygo367),
      (372, yygo372),
      (376, yygo376),
      (379, yygo379),
      (380, yygo380),
      (382, yygo382),
      (383, yygo383),
      (392, yygo392),
      (394, yygo394),
      (396, yygo396),
      (401, yygo401),
      (403, yygo403),
      (404, yygo404),
      (406, yygo406),
      (407, yygo407),
      (408, yygo408),
      (409, yygo409),
      (426, yygo426),
      (428, yygo428),
      (429, yygo429),
      (430, yygo430),
      (431, yygo431),
      (433, yygo433),
      (434, yygo434),
      (435, yygo435),
      (437, yygo437),
      (442, yygo442),
      (445, yygo445),
      (449, yygo449),
      (451, yygo451),
      (453, yygo453),
      (455, yygo455),
      (458, yygo458),
      (460, yygo460),
      (461, yygo461),
      (464, yygo464),
      (470, yygo470),
      (476, yygo476),
      (478, yygo478),
      (479, yygo479),
      (480, yygo480),
      (481, yygo481),
      (484, yygo484),
      (485, yygo485),
      (486, yygo486),
      (489, yygo489),
      (500, yygo500),
      (502, yygo502),
      (503, yygo503),
      (506, yygo506),
      (510, yygo510),
      (511, yygo511),
      (518, yygo518),
      (520, yygo520),
      (521, yygo521),
      (524, yygo524),
      (529, yygo529),
      (532, yygo532),
      (540, yygo540),
      (549, yygo549),
      (552, yygo552),
      (554, yygo554),
      (566, yygo566)];
    sub4 = [      (569, yygo569),
      (574, yygo574),
      (580, yygo580),
      (585, yygo585),
      (601, yygo601),
      (602, yygo602),
      (614, yygo614),
      (615, yygo615),
      (619, yygo619),
      (670, yygo670),
      (684, yygo684),
      (688, yygo688),
      (689, yygo689),
      (690, yygo690),
      (691, yygo691),
      (692, yygo692),
      (699, yygo699),
      (700, yygo700),
      (702, yygo702),
      (707, yygo707),
      (717, yygo717),
      (718, yygo718),
      (723, yygo723)];
      in sub1 `seq` sub2 `seq` sub3 `seq` sub4 `seq` genericArrayFromIndexList (sub1 ++ sub2 ++ sub3 ++ sub4);
{-

    this file will be appended to every parser YYgen.fr builds

 -}

dropBrace !n (t:ts) = case yychar t of
    '{' -> t:dropBrace (n+1) ts
    '}' | n == 1 = ts
        | otherwise = t : dropBrace (n-1) ts
    _   -> t : dropBrace n ts
;
dropBrace n [] = [];

-- the main loop of the parser
yyloop (yyvals@(st, _):_) (yytoks@yyt:yyts) =
    case yyaction st yyt of
        YYAction act
            | act == yyAccept -> YYM.pure (yyaccept (yyvals, yytoks))  -- will this ever happen?
            | act == yyErr    -> do
                            let fun = elemAt yyrecs st
                            toks <- fun yytoks
                            yyloop yyvals toks
            | act == yyBrace = yyloop yyvals (yyt.{tokid=CHAR, value="}"} : dropBrace 1 yytoks) -- insert '}'
            -- shift?
            | act >= 0, yydebug, traceLn (show st ++ ": shift to " ++ show act ++ " on " ++ yyshow yyt) = undefined
            | act >= 0 = yyloop ((act, YYTok yyt)!:yyvals) yyts
            -- must be reduction
            | yydebug, traceLn (show st ++ ": reduce by rule " ++ yyrule (-act)) = undefined
            | otherwise = do
                vals <- yyreduce (-act) yyvals
                yyloop vals yytoks
;
yyloop (yyvals@(st, _):_) [] =
    case yyeaction st of
        YYAction act
            | act == yyAccept -> YYM.pure (yyaccept (yyvals, []))
            | act == yyErr = do
                yyerror yyEOF ("syntax error on end of file")
                YYM.pure (yyvals, [])
            -- shift?
            | act >= 0 -> error ("Can't shift on end of file in state " ++ show act)
            -- must be reduction
            | yydebug, traceLn (show st ++ ": reduce by rule " ++ yyrule (-act)) = undefined
            | otherwise = do
                vals <- yyreduce (-act) yyvals
                yyloop vals []
    ;
yyloop [] yytoks = error "empty stack in yyloop";

yyaction n tok = case itemAt yyacts n of {
    Just fun -> fun tok;
    Nothing  -> YYAction yyErr;
};

yyeaction n = case elemAt yyeacts n of  {
    0 -> YYAction yyErr;
    this -> YYAction this; 
};

{-- nowarn: application of 'yybadprod' will diverge --};
yybadprod p yyvs = error ("bad stack for rule " ++ show p ++ ": " ++ showst yyvs);



-- drop tokens until token is valid in this state
yydrop i [] = yyrecover i [];
yydrop i (t:ts) = case yyaction i t of {
        YYAction err
            | yyErr == err, yydebug, trace (show i ++ ": error recovery drops " ++ yyshow t ++ "\n") = undefined
            | yyErr == err = yydrop i ts
            | otherwise  =  YYM.pure (t:ts);
    };
yyrecover i []
    | yydebug, trace (show i ++ ": error recovery reaches end of file\n") = undefined
    | otherwise = YYM.pure [];

yyrecover i (ts@t:_) = do
    yyerror (yyline t) ("syntax error on " ++ yynice t)
    yydrop i ts
;

yyexpect n trep (ts@t:_) = do
    yyerror (yyline t) ("expected " ++ yynice trep ++ ", found " ++ yynice t)
    YYM.pure (trep:ts)
;

yyexpect n trep [] = do
    yyerror yyEOF ("expected " ++ yynice trep ++ ", found end of file")
    YYM.pure [trep]
;

yyparsing n item (ts@t:_) = do
    yyerror (yyline t) ("unexpected " ++ yynice t ++ " while trying to parse " ++ item)
    yydrop n ts
;
yyparsing n item [] = do
    yyerror yyEOF ("unexpected end of file while parsing " ++ item)
    yyrecover n []
;
yybadstart n item (ts@t:_) = do
    yyerror (yyline t) ("syntax error, " ++ item ++ " cannot start with " ++ yynice t)
    yydrop n ts
;
yybadstart n item [] = do
    yyerror yyEOF ("end of file while expecting " ++ item)
    yyrecover n []
;
yyreduce red yyvs = case itemAt yyprods red of
    Just fun -> do
        reduced <- fun yyvs
        case reduced of
            (yyv, yyvals@(popst, _):_) -> case yygos.genericItemAt popst of
                Just arr -> case elemAt arr red of
                    go | go > 0, yydebug, trace (show popst
                                    ++ ": after reduction goto "
                                    ++ show go ++ "\n") = undefined
                       | go > 0 = YYM.pure ((go, yyv):yyvals)
                       | otherwise = error ("nowhere to go in state "
                                                ++ show popst ++ " after reduction " ++ show red)
                Nothing -> error ("nowhere to go in state "
                                            ++ show popst ++ " after any reduction")
            _ -> error ("reduction " ++ show red ++ " yields nonsensical result.")
    Nothing -> error ("reduction " ++ show red ++ " is unknown.")
;


yyparse yytoks = do
    res <- yyloop [(0, YYStart ())] yytoks
    case res of
        ([(_, YYAcc x)], []) -> YYM.pure (Just x)
        ([(_, YYAcc x)], (yyt:_)) -> do
            yyerror (yyline yyt) ("expected end of file, found `" ++ yynice yyt ++ "`")
            YYM.pure (Just x)
        _ -> YYM.pure Nothing;
;
--begin tail
{--
    the parser pass
 -};
pass :: [Token] -> StG (Maybe ParseResult); -- Global -> IO (Maybe ParseResult, Global);
pass toks = (yyparse . substQQ) toks;
--end tail
